73 lines
1.3 KiB
C++
73 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "SceneModel.h"
|
|
#include "AbstractMesh.h"
|
|
|
|
#include "Image.h"
|
|
#include "DiscretePoint.h"
|
|
|
|
#include <memory>
|
|
|
|
class FontsManager;
|
|
|
|
class AbstractVisualNode
|
|
{
|
|
public:
|
|
AbstractVisualNode(const DiscretePoint& location)
|
|
: mLocation(location)
|
|
{
|
|
|
|
}
|
|
|
|
virtual ~AbstractVisualNode() = default;
|
|
|
|
SceneItem* getSceneItem() const
|
|
{
|
|
return mSceneItem.get();
|
|
}
|
|
|
|
virtual void update(FontsManager* fontsManager)
|
|
{
|
|
|
|
}
|
|
|
|
Image<unsigned char>* getImage() const
|
|
{
|
|
return mImage.get();
|
|
}
|
|
|
|
void syncChildren(const std::vector<AbstractVisualNode*>& children)
|
|
{
|
|
mChildren = children;
|
|
}
|
|
|
|
void addChild(AbstractVisualNode* child)
|
|
{
|
|
mChildren.push_back(child);
|
|
}
|
|
|
|
const std::vector<AbstractVisualNode*>& getChildren() const
|
|
{
|
|
return mChildren;
|
|
}
|
|
|
|
void setIsVisible(bool isVisible)
|
|
{
|
|
mIsVisible = isVisible;
|
|
}
|
|
|
|
unsigned getNumChildren() const
|
|
{
|
|
return mChildren.size();
|
|
}
|
|
|
|
protected:
|
|
DiscretePoint mLocation;
|
|
std::unique_ptr<SceneItem> mSceneItem;
|
|
std::unique_ptr<Image<unsigned char> > mImage;
|
|
|
|
std::vector<AbstractVisualNode*> mChildren;
|
|
|
|
bool mIsVisible{true};
|
|
bool mTransformIsDirty{true};
|
|
};
|