Extra2D/src/scene/scene_module.cpp

53 lines
903 B
C++
Raw Normal View History

#include <scene/scene_module.h>
namespace extra2d {
SceneModule::SceneModule() = default;
SceneModule::~SceneModule() {
shutdown();
}
bool SceneModule::init() {
// 创建导演
director_ = makePtr<Director>();
if (!director_->init()) {
return false;
}
// 绑定事件
onUpdateListener_.bind([this](float dt) {
if (director_) {
director_->update(dt);
}
});
onRenderBeginListener_.bind([this]() {
// 渲染开始,触发场景渲染
if (director_) {
director_->render();
}
});
onRenderEndListener_.bind([]() {
// 渲染结束,清理工作
});
return true;
}
void SceneModule::shutdown() {
if (director_) {
director_->shutdown();
director_.reset();
}
// 重置监听器(会自动注销)
onUpdateListener_.reset();
onRenderBeginListener_.reset();
onRenderEndListener_.reset();
}
} // namespace extra2d