#include "SceneThings.hpp" #include "CommonVertexIndex.hpp" #include "Rect.hpp" #include SimpleGeometryObject::SimpleGeometryObject(GameWorld* world) : GameObject(KD_SimpleGeometry, world) , mRenderObject() , mSize{ 100.0f, 100.0f } , mColor(60, 60, 60) { mRenderObject.SetMaterial(gDefaultMaterial.Get()); mRenderObject.SetFormat(gVformatStandard.Get(), Tags::IT_16Bit); mRenderObject.RebuildIfNecessary(); UpdateRenderObject(); } void SimpleGeometryObject::SetSize(glm::vec2 size) { mSize = size; UpdateRenderObject(); } void SimpleGeometryObject::SetColor(RgbaColor color) { mColor = color; UpdateRenderObject(); } std::span SimpleGeometryObject::GetRenderObjects() const { return { &mRenderObject, 1 }; } void SimpleGeometryObject::UpdateRenderObject() { using namespace Tags; uint16_t indices[6]; Index_U16::Assign(indices, 0); mRenderObject.GetIndexBuffer()->Upload((const std::byte*)indices, IT_16Bit, std::size(indices)); Vertex_PTC vertices[4]; Vertex_PTC::Assign(vertices, Rect{ -mSize / 2.0f, mSize }); Vertex_PTC::Assign(vertices, 0.0f); Vertex_PTC::Assign(vertices, mColor); mRenderObject.GetVertexBufferBindings().bindings[0]->Upload((const std::byte*)vertices, sizeof(vertices)); } BuildingObject::BuildingObject(GameWorld* world) : GameObject(KD_Building, world) { mRenderObject.SetMaterial(gDefaultMaterial.Get()); mRenderObject.SetFormat(gVformatStandard.Get(), Tags::IT_32Bit); mRenderObject.RebuildIfNecessary(); } // void BuildingObject::SetMeshMaterial(Material* material) { // mMaterial.Attach(material); // // TODO update render // } // const Material* BuildingObject::GetMeshMaterial() const { // return mMaterial.Get(); // } // void BuildingObject::SetMesh(GpuMesh* mesh) { // mMesh.Attach(mesh); // // TODO update render // } // const GpuMesh* BuildingObject::GetMesh() const { // return mMesh.Get(); // } std::span BuildingObject::GetRenderObjects() const { return { &mRenderObject, 1 }; }