#pragma once #include "Color.hpp" #include "GameObject.hpp" #include "Renderer.hpp" #include #include class SimpleGeometryObject : public GameObject { private: RenderObject mRenderObject; glm::vec3 mSize; RgbaColor mXFaceColor; RgbaColor mYFaceColor; RgbaColor mZFaceColor; mutable bool mNeedsRebuildMesh ; public: SimpleGeometryObject(GameWorld* world); glm::vec3 GetSize() const { return mSize; } void SetSize(glm::vec3 size); RgbaColor GetXFaceColor() const { return mXFaceColor; } void SetXFaceColor(RgbaColor color); RgbaColor GetYFaceColor() const { return mYFaceColor; } void SetYFaceColor(RgbaColor color); RgbaColor GetZFaceColor() const { return mZFaceColor; } void SetZFaceColor(RgbaColor color); virtual std::span GetRenderObjects() const override; }; class BuildingObject : public GameObject { private: RenderObject mRenderObject; public: BuildingObject(GameWorld* world); // TODO // void SetMeshMaterial(Material* material); // virtual const Material* GetMeshMaterial() const override; // void SetMesh(GpuMesh* mesh); // virtual const GpuMesh* GetMesh() const override; virtual std::span GetRenderObjects() const override; };