stuff-from-scratch/src/visual_elements/AbstractVisualNode.h
2022-11-16 15:06:08 +00:00

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};
};