58 lines
1.2 KiB
C++
58 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "SceneModel.h"
|
|
#include "AbstractMesh.h"
|
|
|
|
#include "Image.h"
|
|
#include "Point.h"
|
|
|
|
#include <memory>
|
|
|
|
#include <iostream>
|
|
|
|
struct SceneInfo;
|
|
|
|
class AbstractVisualNode
|
|
{
|
|
public:
|
|
AbstractVisualNode(const Point& location, const std::string& name = {});
|
|
|
|
virtual ~AbstractVisualNode() = default;
|
|
|
|
void addChild(AbstractVisualNode* child);
|
|
|
|
virtual SceneItem* getSceneItem(std::size_t idx) const;
|
|
|
|
virtual std::size_t getNumSceneItems() const;
|
|
|
|
std::size_t getNumChildren() const;
|
|
|
|
const std::vector<AbstractVisualNode*>& getChildren() const;
|
|
|
|
const std::string& getName() const;
|
|
|
|
Image* getImage() const;
|
|
|
|
bool getIsVisible() const;
|
|
|
|
void syncChildren(const std::vector<AbstractVisualNode*>& children);
|
|
|
|
void setIsVisible(bool isVisible);
|
|
|
|
void setName(const std::string& name);
|
|
|
|
void setLocation(const Point& loc);
|
|
|
|
virtual void update(SceneInfo* sceneInfo);
|
|
|
|
protected:
|
|
Point mLocation;
|
|
std::vector<std::unique_ptr<SceneItem> > mSceneItems;
|
|
std::unique_ptr<Image> mImage;
|
|
|
|
std::vector<AbstractVisualNode*> mChildren;
|
|
|
|
bool mIsVisible{true};
|
|
bool mTransformIsDirty{true};
|
|
std::string mName;
|
|
};
|