ECSTASY
All in the name
Loading...
Searching...
No Matches
EventListeners.hpp
Go to the documentation of this file.
1
11
12#ifndef ECSTASY_INTEGRATIONS_EVENT_LISTENERS_EVENTLISTENERS_HPP_
13#define ECSTASY_INTEGRATIONS_EVENT_LISTENERS_EVENTLISTENERS_HPP_
14
15#include <functional>
16#include <vector>
17
19
20namespace ecstasy
21{
22 class Registry;
23}
24
26{
35 template <typename E>
36 using EventListener = std::function<void(Registry &, Entity, const E &)>;
37
48 template <typename E>
50 public:
57 constexpr EventListeners() noexcept = default;
58
67 constexpr EventListeners(std::vector<EventListener<E>> &&listeners) noexcept : _listeners(listeners)
68 {
69 }
70
77 ~EventListeners() noexcept = default;
78
87 inline void add(EventListener<E> listener) noexcept
88 {
89 _listeners.push_back(listener);
90 }
91
98 constexpr void clear() noexcept
99 {
100 _listeners.clear();
101 }
102
113 constexpr void operator()(Registry &registry, Entity entity, const E &event)
114 {
116 e(registry, entity, event);
117 }
118
127 [[nodiscard]] constexpr std::vector<EventListener<E>> &getInner() noexcept
128 {
129 return _listeners;
130 }
131
140 [[nodiscard]] constexpr const std::vector<EventListener<E>> &getInner() const noexcept
141 {
142 return _listeners;
143 }
144
145 private:
146 // Internal listeners container.
148 };
149} // namespace ecstasy::integration::event
150
151#endif /* !ECSTASY_INTEGRATIONS_EVENT_LISTENERS_EVENTLISTENERS_HPP_ */
Encapsulate an index to an entity.
Encapsulate an index to an entity.
Definition Entity.hpp:35
Base of an ECS architecture.
Definition Registry.hpp:82
~EventListeners() noexcept=default
Destroy the Event Listeners.
std::vector< EventListener< E > > _listeners
void add(EventListener< E > listener) noexcept
Add a listener.
constexpr std::vector< EventListener< E > > & getInner() noexcept
Get the Inner listeners container.
constexpr const std::vector< EventListener< E > > & getInner() const noexcept
Get the Inner listeners container.
constexpr EventListeners() noexcept=default
Construct a new empty EventListeners.
constexpr void operator()(Registry &registry, Entity entity, const E &event)
Call the internal listeners.
constexpr void clear() noexcept
Delete all the listeners.
Event integration.
Definition Event.hpp:25
Namespace containing all symbols specific to ecstasy.
Definition ecstasy.hpp:30