44 lines
927 B
C++
44 lines
927 B
C++
|
|
#include "./scene.hpp"
|
|
|
|
namespace sdl_gpu_test
|
|
{
|
|
void SceneNode::handleEnteredScene()
|
|
{
|
|
for (scene_node_ptr_t& child : mChildren)
|
|
{
|
|
child->enterScene(mScene, this);
|
|
}
|
|
}
|
|
|
|
SceneNode* SceneNode::addChild(scene_node_ptr_t&& node)
|
|
{
|
|
mChildren.push_back(std::move(node));
|
|
|
|
if (mScene != nullptr)
|
|
{
|
|
mChildren.back()->enterScene(mScene, this);
|
|
}
|
|
|
|
return mChildren.back().get();
|
|
}
|
|
|
|
|
|
void SceneNode::enterScene(Scene* scene, SceneNode* parent)
|
|
{
|
|
MIJIN_ASSERT(mScene == nullptr && mParent == nullptr, "SceneNode is already in a scene.");
|
|
MIJIN_ASSERT_FATAL(scene != nullptr, "Missing parameter: scene.");
|
|
|
|
mScene = scene;
|
|
mParent = parent;
|
|
handleEnteredScene();
|
|
}
|
|
|
|
void Scene::init(const SceneInitArgs& args)
|
|
{
|
|
MIJIN_ASSERT_FATAL(args.renderer != nullptr, "Missing parameter: renderer.");
|
|
mRenderer = args.renderer;
|
|
mRootNode.enterScene(this, nullptr);
|
|
}
|
|
}
|