2#include "../base/foray_framerenderinfo.hpp"
3#include "../foray_logger.hpp"
4#include "../osi/foray_osi_declares.hpp"
22 template <
typename TCallback,
bool Ordered = TCallback::ORDERED_EXECUTION>
27 inline void Invoke(
typename TCallback::TArg arg);
28 inline void Add(TCallback* callback);
29 inline bool Remove(TCallback* callback);
32 template <
typename TCallback>
37 inline void Invoke(
typename TCallback::TArg arg);
38 inline void Add(TCallback* callback);
39 inline bool Remove(TCallback* callback);
48 template <
typename TCallback,
bool Ordered>
51 for(
auto callback : Listeners)
57 template <
typename TCallback,
bool Ordered>
60 Listeners.push_back(callback);
63 template <
typename TCallback,
bool Ordered>
66 auto iter = std::find(Listeners.cbegin(), Listeners.cend(), callback);
67 if(iter != Listeners.cend())
69 Listeners.erase(iter);
75 template <
typename TCallback>
78 for(
auto callback : Listeners)
80 callback.second->Invoke(arg);
84 template <
typename TCallback>
87 Listeners.emplace(callback->GetOrder(), callback);
90 template <
typename TCallback>
93 auto range = Listeners.equal_range(callback->GetOrder());
94 for(
auto iter = range.first; iter != range.second; ++iter)
96 if(iter->second == callback)
98 Listeners.erase(iter);
Base class for operating system events.
Definition foray_event.hpp:13
Type maintaining callback lists for event distribution.
Definition foray_callbackdispatcher.hpp:12
virtual void InvokeDraw(SceneDrawInfo &renderInfo)
friend Registry
Definition foray_callbackdispatcher.hpp:14
CallbackVector< Component::DrawCallback > mDraw
Definition foray_callbackdispatcher.hpp:44
CallbackVector< Component::OnResizedCallback > mOnResized
Definition foray_callbackdispatcher.hpp:45
virtual void InvokeUpdate(SceneUpdateInfo &updateInfo)
CallbackVector< Component::UpdateCallback > mUpdate
Definition foray_callbackdispatcher.hpp:43
CallbackVector< Component::OnEventCallback > mOnEvent
Definition foray_callbackdispatcher.hpp:42
virtual void InvokeOnEvent(const osi::Event *event)
virtual void InvokeOnResized(VkExtent2D event)
Definition foray_animation.hpp:8
Definition foray_callbackdispatcher.hpp:24
std::vector< TCallback * > Listeners
Definition foray_callbackdispatcher.hpp:25
bool Remove(TCallback *callback)
Definition foray_callbackdispatcher.hpp:64
void Add(TCallback *callback)
Definition foray_callbackdispatcher.hpp:58
void Invoke(typename TCallback::TArg arg)
Definition foray_callbackdispatcher.hpp:49
Temporary type passed to components when drawing the scene.
Definition foray_scenedrawing.hpp:63
Temporary type passed to components when updating the scene.
Definition foray_scenedrawing.hpp:49