VoxelEngine
Loading...
Searching...
No Matches
EventSource.h
1
2
#pragma once
3
4
#include <unordered_set>
5
6
namespace
engine {
7
class
EventSite;
8
9
class
EventSource
{
10
public
:
11
EventSource
() =
default
;
12
virtual
~EventSource
() =
default
;
13
14
void
subscribe(
EventSite
* site);
15
void
unsubscribe(
EventSite
* site);
16
17
template
<
typename
TEventSite,
typename
TEvent>
18
void
fireEvent(
void
(TEventSite::*fire)(TEvent* event), TEvent* event) {
19
for
(
EventSite
* site : m_sources) {
20
TEventSite* appSite =
dynamic_cast<
TEventSite*
>
(
21
site
22
);
// TODO I dont like the dynamic cast and virtual inheritance of EventClass (right now only because of UI manager diamond inheritance)
23
if
(appSite) {
24
(appSite->*fire)(event);
25
}
26
}
27
}
28
29
private
:
30
std::unordered_set<EventSite*> m_sources;
31
};
32
}
// namespace engine
engine::EventSite
Definition
EventSite.h:4
engine::EventSource
Definition
EventSource.h:9
src
utility
EventSource.h
Generated by
1.9.8