Clean up use of transforms in scene graph.

This commit is contained in:
jmsgrogan 2023-01-19 17:37:26 +00:00
parent 3915a40c96
commit f26ee2ebc4
37 changed files with 238 additions and 242 deletions

View file

@ -19,12 +19,6 @@ Scene::~Scene()
}
void Scene::update()
{
mSceneItems.clear();
updateNode(mRootNode.get());
}
void Scene::addNode(AbstractVisualNode* node)
{
mRootNode->addChild(node);
@ -32,7 +26,7 @@ void Scene::addNode(AbstractVisualNode* node)
bool Scene::isEmpty() const
{
return mRootNode->getNumChildren() == 0;
return mRootNode->getChildren().empty();
}
const Color& Scene::getBackgroundColor() const
@ -45,15 +39,24 @@ void Scene::setBackgroundColor(const Color& color)
mBackGroundColor = color;
}
void Scene::updateNode(AbstractVisualNode* node)
void Scene::update()
{
mSceneItems.clear();
updateNode(mRootNode.get(), Transform());
}
void Scene::updateNode(AbstractVisualNode* node, const Transform& transform)
{
node->update(mSceneInfo.get());
auto node_transform = node->getTransform();
node_transform.applyPre(transform);
for (auto child : node->getChildren())
{
if (child->getIsVisible())
{
updateNode(child);
updateNode(child, node_transform);
}
}
@ -61,6 +64,7 @@ void Scene::updateNode(AbstractVisualNode* node)
{
if (auto item = node->getSceneItem(idx))
{
item->updateTransform(node_transform);
mSceneItems.push_back(item);
}
}