#pragma once struct lv2_event_queue_t; class EventManager { std::mutex m_lock; std::unordered_map> eq_map; public: void Init(); void Clear(); bool CheckKey(u64 key); bool RegisterKey(const std::shared_ptr& data); bool UnregisterKey(u64 key); template std::shared_ptr MakeEventQueue(Args&&... args) { const auto queue = std::make_shared(args...); return RegisterKey(queue) ? queue : nullptr; } std::shared_ptr GetEventQueue(u64 key); };