#pragma once #include "SceneModel.h" #include "AbstractMesh.h" #include "Image.h" #include "DiscretePoint.h" #include 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* getImage() const { return mImage.get(); } void syncChildren(const std::vector& children) { mChildren = children; } void addChild(AbstractVisualNode* child) { mChildren.push_back(child); } const std::vector& getChildren() const { return mChildren; } void setIsVisible(bool isVisible) { mIsVisible = isVisible; } unsigned getNumChildren() const { return mChildren.size(); } protected: DiscretePoint mLocation; std::unique_ptr mSceneItem; std::unique_ptr > mImage; std::vector mChildren; bool mIsVisible{true}; bool mTransformIsDirty{true}; };