#pragma once #include #include #include #include namespace extra2d { /** * @brief 场景模块 * * 将导演系统集成到引擎模块系统中 */ class SceneModule : public Module { // 自动注册到模块系统,优先级为 4(在 Renderer 之后) E2D_REGISTER_MODULE(SceneModule, "Scene", 4) public: SceneModule(); ~SceneModule() override; // 禁止拷贝 SceneModule(const SceneModule &) = delete; SceneModule &operator=(const SceneModule &) = delete; // 允许移动 SceneModule(SceneModule &&) noexcept; SceneModule &operator=(SceneModule &&) noexcept; // 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