Clean up of scene nodes to support 2d and non int positioning.
This commit is contained in:
parent
1eeaebd0a9
commit
672b31b603
45 changed files with 341 additions and 200 deletions
73
src/visual_elements/scene/Scene.cpp
Normal file
73
src/visual_elements/scene/Scene.cpp
Normal file
|
@ -0,0 +1,73 @@
|
|||
#include "Scene.h"
|
||||
|
||||
#include "RootNode.h"
|
||||
#include "FontsManager.h"
|
||||
#include "SceneItem.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
Scene::Scene()
|
||||
: mRootNode(std::make_unique<RootNode>()),
|
||||
mSceneInfo(std::make_unique<SceneInfo>())
|
||||
{
|
||||
mRootNode->setName("Scene_RootNode");
|
||||
}
|
||||
|
||||
Scene::~Scene()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Scene::update(FontsManager* fontsManager)
|
||||
{
|
||||
mSceneInfo->mFontsManager = fontsManager;
|
||||
|
||||
mSceneItems.clear();
|
||||
updateNode(mRootNode.get());
|
||||
}
|
||||
|
||||
void Scene::addNode(AbstractVisualNode* node)
|
||||
{
|
||||
mRootNode->addChild(node);
|
||||
}
|
||||
|
||||
bool Scene::isEmpty() const
|
||||
{
|
||||
return mRootNode->getNumChildren() == 0;
|
||||
}
|
||||
|
||||
void Scene::updateNode(AbstractVisualNode* node)
|
||||
{
|
||||
for (auto child : node->getChildren())
|
||||
{
|
||||
if (child->getIsVisible())
|
||||
{
|
||||
updateNode(child);
|
||||
}
|
||||
}
|
||||
|
||||
node->update(mSceneInfo.get());
|
||||
|
||||
for (std::size_t idx=0; idx< node->getNumSceneItems(); idx++)
|
||||
{
|
||||
if (auto item = node->getSceneItem(idx))
|
||||
{
|
||||
mSceneItems.push_back(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const std::vector<SceneItem*>& Scene::getItems() const
|
||||
{
|
||||
return mSceneItems;
|
||||
}
|
||||
|
||||
bool Scene::shouldShowMeshOutline() const
|
||||
{
|
||||
return mSceneInfo->mShowMeshOutline;
|
||||
}
|
||||
|
||||
void Scene::setShowMeshOutline(bool shouldShow)
|
||||
{
|
||||
mSceneInfo->mShowMeshOutline = shouldShow;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue