Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
SDLEventManager.cpp
Go to the documentation of this file.
1
2
5
6namespace Divide {
7
9 NO_DESTROY vector<SDLEventListener*> SDLEventManager::s_eventListeners;
10
12 {
14
15 assert(!eastl::any_of(eastl::cbegin(s_eventListeners),
16 eastl::cend(s_eventListeners),
17 [&listener](SDLEventListener* l)
18 {
19 return l != nullptr && l->listenerID() == listener.listenerID();
20 }));
21
22 s_eventListeners.push_back(&listener);
23 }
24
26 {
28
29 const bool success = dvd_erase_if(s_eventListeners,
30 [targetID = listener.listenerID()](SDLEventListener* l)
31 {
32 return l && l->listenerID() == targetID;
33 });
34 DIVIDE_ASSERT(success);
35 }
36
38 {
39 static SDL_Event evt;
40
42
43 while (SDL_PollEvent(&evt))
44 {
46 PROFILE_TAG("Event", evt.type);
47
49
50 for (SDLEventListener* listener : s_eventListeners)
51 {
52 assert(listener != nullptr);
53
54 if (listener->onSDLEvent(evt))
55 {
56 break;
57 }
58 }
59 }
60 }
61}; //namespace Divide
#define DIVIDE_ASSERT(...)
#define NO_DESTROY
#define PROFILE_SCOPE_AUTO(CATEGORY)
Definition: Profiler.h:87
#define PROFILE_TAG(NAME,...)
Definition: Profiler.h:88
#define PROFILE_SCOPE(NAME, CATEGORY)
Definition: Profiler.h:86
U64 listenerID() const noexcept
static void registerListener(SDLEventListener &listener)
static SharedMutex s_eventListenerLock
static vector< SDLEventListener * > s_eventListeners
static void unregisterListener(const SDLEventListener &listener)
constexpr Optick::Category::Type IO
Definition: Profiler.h:68
Handle console commands that start with a forward slash.
Definition: AIProcessor.cpp:7
std::lock_guard< mutex > LockGuard
Definition: SharedMutex.h:55
std::shared_mutex SharedMutex
Definition: SharedMutex.h:43
std::shared_lock< mutex > SharedLock
Definition: SharedMutex.h:49
bool dvd_erase_if(eastl::vector< T, A > &vec, Predicate &&pred)
Definition: Vector.h:109