diff --git a/interfaces/Crafter.Event.cppm b/interfaces/Crafter.Event.cppm index d1997fc..60123e6 100644 --- a/interfaces/Crafter.Event.cppm +++ b/interfaces/Crafter.Event.cppm @@ -35,6 +35,7 @@ namespace Crafter { EventListener(EventListener&) = delete; EventListener& operator=(EventListener&) = delete; void SetEvent(Event* eventToListenTo, std::function function, int priority = 0); + void Clear(); EventListener(Event* eventToListenTo, std::function function, int priority = 0); ~EventListener(); Event* eventToListenTo; @@ -49,6 +50,7 @@ namespace Crafter { EventListener(EventListener&) = delete; EventListener& operator=(EventListener&) = delete; void SetEvent(Event* eventToListenTo, std::function function, int priority = 0); + void Clear(); EventListener(Event* eventToListenTo, std::function function, int priority = 0); ~EventListener(); Event* eventToListenTo; @@ -263,6 +265,12 @@ namespace Crafter { } } + template void EventListener::Clear() { + if (eventToListenTo != nullptr) { + eventToListenTo->RemoveListener(this); + } + } + template EventListener::EventListener() { eventToListenTo = nullptr; } @@ -289,6 +297,12 @@ namespace Crafter { } } + void EventListener::Clear() { + if (eventToListenTo != nullptr) { + eventToListenTo->RemoveListener(this); + } + } + EventListener::EventListener() { eventToListenTo = nullptr; }