Clean up use of transforms in scene graph.
This commit is contained in:
parent
3915a40c96
commit
f26ee2ebc4
37 changed files with 238 additions and 242 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue