Convert visual layers to scene nodes.
This commit is contained in:
parent
798cb365d7
commit
3e53bd9e00
64 changed files with 863 additions and 551 deletions
|
@ -1,72 +1,42 @@
|
|||
#include "Scene.h"
|
||||
|
||||
#include "VisualLayer.h"
|
||||
#include "GeometryNode.h"
|
||||
#include "RectangleNode.h"
|
||||
#include "TextNode.h"
|
||||
#include "RootNode.h"
|
||||
#include "FontsManager.h"
|
||||
#include "SceneItem.h"
|
||||
|
||||
#include "MeshBuilder.h"
|
||||
#include "TriMesh.h"
|
||||
|
||||
#include "Image.h"
|
||||
|
||||
void Scene::syncLayers(const std::vector<VisualLayer*>& layers)
|
||||
Scene::Scene()
|
||||
: mRootNode(std::make_unique<RootNode>())
|
||||
{
|
||||
mLayers = layers;
|
||||
|
||||
}
|
||||
|
||||
void Scene::update(FontsManager* fontsManager, Image<unsigned char>* image)
|
||||
void Scene::update(FontsManager* fontsManager)
|
||||
{
|
||||
if (image)
|
||||
updateNode(mRootNode.get(), fontsManager);
|
||||
}
|
||||
|
||||
void Scene::updateNode(AbstractVisualNode* node, FontsManager* fontsManager)
|
||||
{
|
||||
for (auto child : node->getChildren())
|
||||
{
|
||||
//
|
||||
}
|
||||
else
|
||||
{
|
||||
mWorkingMeshs.clear();
|
||||
for(auto layer : mLayers)
|
||||
{
|
||||
if (layer->hasShapeNode())
|
||||
{
|
||||
auto node = layer->getShapeNode();
|
||||
if (layer->getIsDirty())
|
||||
{
|
||||
node->update(fontsManager);
|
||||
layer->setIsDirty(false);
|
||||
}
|
||||
mWorkingMeshs.push_back(dynamic_cast<TriMesh*>(node->getMesh()));
|
||||
mTextures.push_back(nullptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
auto node = dynamic_cast<TextNode*>(layer->getTextNode());
|
||||
if (layer->getIsDirty())
|
||||
{
|
||||
node->update(fontsManager);
|
||||
layer->setIsDirty(false);
|
||||
}
|
||||
mTextData.push_back(node->getTextData());
|
||||
}
|
||||
}
|
||||
updateNode(child, fontsManager);
|
||||
}
|
||||
|
||||
node->update(fontsManager);
|
||||
mSceneItems.push_back(node->getSceneItem());
|
||||
}
|
||||
|
||||
const std::vector<TextData>& Scene::getTextData() const
|
||||
RootNode* Scene::getRootNode() const
|
||||
{
|
||||
return mTextData;
|
||||
return mRootNode.get();
|
||||
}
|
||||
|
||||
void Scene::processRectangleNode(RectangleNode* node)
|
||||
unsigned Scene::getNumItems() const
|
||||
{
|
||||
|
||||
return mSceneItems.size();
|
||||
}
|
||||
|
||||
unsigned Scene::getNumMeshes() const
|
||||
SceneItem* Scene::getItem(std::size_t idx) const
|
||||
{
|
||||
return mWorkingMeshs.size();
|
||||
}
|
||||
|
||||
TriMesh* Scene::getMesh(std::size_t idx) const
|
||||
{
|
||||
return mWorkingMeshs[idx];
|
||||
return mSceneItems[idx];
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue