ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
EventBus类 参考

事件总线,缓冲队列模式 更多...

#include <EventBus.h>

Public 类型

using HandlerID = uint64_t

Public 成员函数

 EventBus (const EventBus &)=delete
EventBusoperator= (const EventBus &)=delete
 EventBus (EventBus &&)=delete
EventBusoperator= (EventBus &&)=delete

静态 Public 成员函数

template<typename EventType>
static HandlerID Subscribe (std::function< void(const EventType &)> callback)
template<typename EventType>
static void Unsubscribe (HandlerID id)
template<typename EventType>
static void Emit (const EventType &event)
static void ProcessEvents ()
template<typename EventType>
static void Clear ()
static void ClearAll ()
static EventBusGetInstance ()

详细描述

事件总线,缓冲队列模式

所有事件先入队,在游戏循环的统一时刻(ProcessEvents)派发。 避免递归触发、迭代器失效等问题。

使用示例: struct CollisionEvent : public Shit::Event { class GameObject* a; class GameObject* b; };

uint64_t id = Shit::EventBus::Subscribe<CollisionEvent>( [](const CollisionEvent& e) { /* handle *\/ });

Shit::EventBus::Emit(CollisionEvent{nullptr, nullptr}); // 游戏循环结束时: Shit::EventBus::ProcessEvents(); Shit::EventBus::Unsubscribe<CollisionEvent>(id);

成员类型定义说明

◆ HandlerID

using HandlerID = uint64_t

构造及析构函数说明

◆ EventBus() [1/2]

EventBus ( const EventBus & )
delete

◆ EventBus() [2/2]

EventBus ( EventBus && )
delete

成员函数说明

◆ Clear()

template<typename EventType>
void Clear ( )
inlinestatic

◆ ClearAll()

void ClearAll ( )
inlinestatic

◆ Emit()

template<typename EventType>
void Emit ( const EventType & event)
inlinestatic

◆ GetInstance()

EventBus & GetInstance ( )
static

◆ operator=() [1/2]

EventBus & operator= ( const EventBus & )
delete

◆ operator=() [2/2]

EventBus & operator= ( EventBus && )
delete

◆ ProcessEvents()

void ProcessEvents ( )
inlinestatic

◆ Subscribe()

template<typename EventType>
HandlerID Subscribe ( std::function< void(const EventType &)> callback)
inlinestatic

◆ Unsubscribe()

template<typename EventType>
void Unsubscribe ( HandlerID id)
inlinestatic

该类的文档由以下文件生成: