Clean up of scene nodes to support 2d and non int positioning.

This commit is contained in:
jmsgrogan 2023-01-11 10:21:18 +00:00
parent 1eeaebd0a9
commit 672b31b603
45 changed files with 341 additions and 200 deletions

View file

@ -0,0 +1,58 @@
#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<unsigned char>* 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<unsigned char> > mImage;
std::vector<AbstractVisualNode*> mChildren;
bool mIsVisible{true};
bool mTransformIsDirty{true};
std::string mName;
};