1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#include "SceneThings.hpp"
#include "CommonVertexIndex.hpp"
#include "Rect.hpp"
#include <utility>
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<const RenderObject> 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<float>{ -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<const RenderObject> BuildingObject::GetRenderObjects() const {
return { &mRenderObject, 1 };
}
|