53 lines
903 B
C++
53 lines
903 B
C++
#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
|