12#include "SD/export.hpp"
30 return std::ranges::any_of(m_events, [](
const auto&
e) {
31 return e->get_event_type() == EventType::WINDOW_RESIZE ||
32 e->get_event_type() == EventType::SWAPCHAIN_OUT_OF_DATE;
37 requires std::derived_from<T, Event>
39 return std::ranges::any_of(
40 m_events, [](
const auto&
e) {
return e->get_event_type() == T::get_static_type(); });
44 void clear() { m_events.clear(); }
47 template<
typename T,
typename...
Args>
48 requires std::derived_from<T, Event>
50 m_events.emplace_back(std::make_unique<T>(std::forward<Args>(
args)...));
54 requires std::derived_from<T, Event>
56 auto ret = std::ranges::remove_if(
57 m_events, [](
const auto&
e) {
return e->get_event_type() == T::GetStaticType(); });
59 m_events.erase(
ret.begin(), m_events.end());
63 auto begin() {
return m_events.begin(); }
64 auto end() {
return m_events.end(); }
76 template<
typename T,
typename F>
Definition EventManager.hpp:72
Event & m_event
Definition EventManager.hpp:88
bool dispatch(const F &func)
Definition EventManager.hpp:77
EventDispatcher(Event &event)
Definition EventManager.hpp:74
Definition EventManager.hpp:20
auto end() const
Definition EventManager.hpp:66
EventManager & operator=(const EventManager &)=delete
auto end()
Definition EventManager.hpp:64
std::vector< std::unique_ptr< Event > > m_events
Definition EventManager.hpp:69
void clear()
Definition EventManager.hpp:44
EventManager(EventManager &&)=default
EventManager()
Definition EventManager.hpp:22
EventManager(const EventManager &)=delete
bool has_event() const
Definition EventManager.hpp:38
EventManager & operator=(EventManager &&)=default
void clear_type()
Definition EventManager.hpp:55
void push_event(Args &&... args)
Definition EventManager.hpp:49
bool has_resize_event() const
Definition EventManager.hpp:29
auto begin()
Definition EventManager.hpp:63
auto begin() const
Definition EventManager.hpp:65
bool m_handled
Definition Event.hpp:68
virtual EventType get_event_type() const =0
Definition Application.hpp:28
constexpr T g_type_max
Definition types.hpp:21