#pragma once #include #include #include #include namespace extra2d { /** * @brief 场景模块 * * 将导演系统集成到引擎模块系统中 */ class SceneModule : public Module { // 优先级为 5,在 RendererModule (优先级 4) 之后初始化 E2D_REGISTER_MODULE(SceneModule, "Scene", 5) public: SceneModule(); ~SceneModule() override; // 禁止拷贝和移动 SceneModule(const SceneModule &) = delete; SceneModule &operator=(const SceneModule &) = delete; SceneModule(SceneModule &&) = delete; SceneModule &operator=(SceneModule &&) = delete; // Module 接口实现 bool init() override; void shutdown() override; /** * @brief 获取导演 * @return 导演指针 */ Director *getDirector() const { return director_.get(); } private: Ptr director_; // 事件监听器 events::OnUpdate::Listener onUpdateListener_; events::OnRenderBegin::Listener onRenderBeginListener_; events::OnRenderEnd::Listener onRenderEndListener_; }; } // namespace extra2d