1 #ifndef HB_EVENT_MANAGER_H
2 #define HB_EVENT_MANAGER_H
10 template <
typename Event>
14 typedef std::function<void(const Event&)> Listener;
15 int listen(Listener&& listener)
17 if (m_disabled.size() != 0)
19 int i = m_disabled.back();
20 m_disabled.pop_back();
21 m_listeners[i] = std::move(listener);
22 m_is_active[i] =
true;
27 m_listeners.push_back(std::move(listener));
28 m_is_active.push_back(
true);
29 return m_listeners.size()-1;
33 void message(
const Event& event)
35 for (
unsigned int i = 0; i < m_listeners.size(); ++i)
38 m_listeners[i](event);
44 m_is_active[id] =
false;
45 m_disabled.push_back(
id);
49 std::vector<Listener> m_listeners;
50 std::vector<int> m_disabled;
51 std::vector<bool> m_is_active;
57 template <
typename C,
typename R,
typename A>
58 struct traits<R(C::*)(const A&) const>
64 template <
typename... Events>
68 template <
typename Event>
75 template <
typename Listener>
81 ret.id = em.listen(std::move(listener));
85 template <
typename Event>
86 void message(
const Event& event)
92 template <
typename Event>
93 void ignore(
const ListenerId<Event>&
id)
95 detail::EventManager<Event>& em = *
this;
Definition: EventManager.h:11
Definition: EventManager.h:55
Definition: EventManager.h:65
Definition: Box2DPlugin.h:6
Definition: EventManager.h:69