Engine²
Open-source game engine written in C++.
Loading...
Searching...
No Matches
EventContainer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <any>
4#include <memory>
5
7#include "core/Core.hpp"
8
9namespace Event::Utils {
10
12 virtual ~IEventContainer() = default;
13 virtual void Trigger(const std::any &event) = 0;
14};
15
16template <typename TEvent>
17class EventContainer : public IEventContainer, public FunctionUtils::FunctionContainer<void, const TEvent &> {
18 public:
19 void Trigger(const std::any &event) override
20 {
21 const TEvent &typedEvent = std::any_cast<const TEvent &>(event);
22 for (auto &callback : this->GetFunctions())
23 {
24 callback->Call(typedEvent);
25 }
26 }
27};
28
29} // namespace Event::Utils
Definition EventContainer.hpp:17
void Trigger(const std::any &event) override
Definition EventContainer.hpp:19
Container for functions, allowing for dynamic storage and invocation.
Definition FunctionContainer.hpp:14
const std::list< std::unique_ptr< FunctionType > > & GetFunctions()
Definition FunctionContainer.hpp:87
Definition EventContainer.hpp:9
Definition EventContainer.hpp:11
virtual ~IEventContainer()=default
virtual void Trigger(const std::any &event)=0