Elaztek Developer Hub
Blamite Game Engine - blam!  00346.12.11.21.0529.blamite
The core library for the Blamite Game Engine.
geometry_test.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "../../debug_ui.h"
5 
7 
8 struct Triangle
9 {
10  uint16_t x;
11  uint16_t y;
12  uint16_t z;
13 };
14 
15 namespace Blam::DebugUI::Windows
16 {
27  {
28  private:
29  std::vector<Triangle> triangles = {
30  {0, 1, 2},
31  {1, 3, 2},
32  {4, 6, 5},
33  {5, 6, 7},
34  {0, 2, 4},
35  {4, 2, 6},
36  {1, 5, 3},
37  {5, 7, 3},
38  {0, 4, 1},
39  {4, 5, 1},
40  {2, 3, 6},
41  {6, 3, 7}
42  };
43 
44  std::vector<PrimitiveGenericVertex> verticies = {
45  {-1.0f, 1.0f, 1.0f, 0xff000000 },
46  { 1.0f, 1.0f, 1.0f, 0xff0000ff },
47  {-1.0f, -1.0f, 1.0f, 0xff00ff00 },
48  { 1.0f, -1.0f, 1.0f, 0xff00ffff },
49  {-1.0f, 1.0f, -1.0f, 0xffff0000 },
50  { 1.0f, 1.0f, -1.0f, 0xffff00ff },
51  {-1.0f, -1.0f, -1.0f, 0xffffff00 },
52  { 1.0f, -1.0f, -1.0f, 0xffffffff },
53  };
54 
55  bool auto_rebuild = false;
56  int delete_triangle_at = -1;
57  int delete_vertex_at = -1;
58  float drag_speed = 0.1;
59 
60  public:
63 
64  void Draw()
65  {
66  if (show)
67  {
68  if (ImGui::Begin("Geometry Test", &show))
69  {
70  ImGui::TextColored(ImVec4(1, 0, 0, 1), "this utility is no longer functional and will be removed in the future");
72  ImGui::Checkbox("auto rebuild", &auto_rebuild);
73  ImGui::InputFloat("drag speed", &drag_speed);
74 
75  //BlamRenderModel* model = BlamRendering::Models::GetTestModel();
76 
77  if (ImGui::CollapsingHeader("triangles"))
78  {
79  ImGui::PushID("triangle_controls");
80 
81  if (ImGui::Button("+"))
82  {
83  triangles.push_back(Triangle());
84  }
86  if (ImGui::Button("delete @"))
87  {
88  if (delete_triangle_at < triangles.size() && delete_triangle_at > -1)
89  {
90  triangles.erase(triangles.begin() + delete_triangle_at);
91  }
92  }
94  ImGui::InputInt("index", &delete_triangle_at);
95 
96  ImGui::PopID();
97 
99 
100  for (int i = 0; i < triangles.size(); i++)
101  {
102  ImGui::PushItemWidth(250.0f);
103  ImGui::PushID(std::string("triangle_i_" + std::to_string(i)).c_str());
104 
105  Triangle* triangle = &triangles.at(i);
106  ImGui::Text(std::to_string(i).c_str());
107  ImGui::SameLine();
108  ImGui::DragShort("x", (short*)&triangle->x, drag_speed);
109  ImGui::SameLine();
110  ImGui::DragShort("y", (short*)&triangle->y, drag_speed);
111  ImGui::SameLine();
112  ImGui::DragShort("z", (short*)&triangle->z, drag_speed);
113 
114  ImGui::PopID();
116  }
117  }
118 
119  if (ImGui::CollapsingHeader("verticies"))
120  {
121  ImGui::PushID("vertex_controls");
122 
123  if (ImGui::Button("+"))
124  {
125  verticies.push_back(PrimitiveGenericVertex());
126  }
127  ImGui::SameLine();
128  if (ImGui::Button("delete @"))
129  {
130  if (delete_vertex_at < verticies.size() && delete_vertex_at > -1)
131  {
132  verticies.erase(verticies.begin() + delete_vertex_at);
133  }
134  }
135  ImGui::SameLine();
136  ImGui::InputInt("index", &delete_vertex_at);
137 
138  ImGui::PopID();
139 
141 
142  for (int i = 0; i < verticies.size(); i++)
143  {
144  ImGui::PushItemWidth(250.0f);
145  ImGui::PushID(std::string("vertex_i_" + std::to_string(i)).c_str());
146 
147  PrimitiveGenericVertex* vertex = &verticies.at(i);
148  ImGui::Text(std::to_string(i).c_str());
149  ImGui::SameLine();
150  ImGui::DragFloat("x", &vertex->x, 0.1);
151  ImGui::SameLine();
152  ImGui::DragFloat("y", &vertex->y, 0.1);
153  ImGui::SameLine();
154  ImGui::DragFloat("z", &vertex->z, 0.1);
155 
156  uint32_t abgr_color = 0;
157 
158  ImVec4 color = ImGui::ColorConvertU32ToFloat4(vertex->abgr);
159 
160  ImGui::ColorEdit4("color", (float*)&color);
161 
162  vertex->abgr = ImGui::ColorConvertFloat4ToU32(color);
163 
165  ImGui::PopID();
166  }
167  }
168 
169  if (auto_rebuild)
170  {
171  ImGui::TextDisabled("model data is automatically rebuilt");
172 
173  //model->verticies = verticies;
174 
175  std::vector<uint16_t> triangles_raw = {};
176 
177  for (Triangle t : triangles)
178  {
179  triangles_raw.push_back(t.x);
180  triangles_raw.push_back(t.y);
181  triangles_raw.push_back(t.z);
182  }
183 
184  //model->triangles = triangles_raw;
185 
186  //model->Rebuild();
187  }
188  else
189  {
190  if (ImGui::Button("rebuild model data"))
191  {
192  //model->verticies = verticies;
193 
194  std::vector<uint16_t> triangles_raw = {};
195 
196  for (Triangle t : triangles)
197  {
198  triangles_raw.push_back(t.x);
199  triangles_raw.push_back(t.y);
200  triangles_raw.push_back(t.z);
201  }
202 
203  //model->triangles = triangles_raw;
204 
205  //model->Rebuild();
206  }
207  }
208  }
209 
210  ImGui::End();
211  }
212 
213  }
214  };
215 }
Blam::DebugUI::Windows::GeometryTest::Draw
void Draw()
Draws the contents of the group.
Definition: geometry_test.hpp:64
ImGui::PopItemWidth
IMGUI_API void PopItemWidth()
Definition: imgui.cpp:6183
ImGui::Checkbox
IMGUI_API bool Checkbox(const char *label, bool *v)
Definition: imgui_widgets.cpp:974
ImVec4
Definition: imgui.h:192
primitives.h
PrimitiveGenericVertex
Definition: primitives.h:9
ImGui::End
IMGUI_API void End()
Definition: imgui.cpp:6016
Triangle::z
uint16_t z
Definition: geometry_test.hpp:12
ImGui::SameLine
IMGUI_API void SameLine(float offset_from_start_x=0.0f, float spacing=-1.0f)
Definition: imgui.cpp:7147
Triangle::x
uint16_t x
Definition: geometry_test.hpp:10
ImGui::DragFloat
IMGUI_API bool DragFloat(const char *label, float *v, float v_speed=1.0f, float v_min=0.0f, float v_max=0.0f, const char *format="%.3f", float power=1.0f)
Definition: imgui_widgets.cpp:2164
PrimitiveGenericVertex::x
float x
Definition: primitives.h:11
ImGui::Begin
IMGUI_API bool Begin(const char *name, bool *p_open=NULL, ImGuiWindowFlags flags=0)
Definition: imgui.cpp:5397
ImGui::CollapsingHeader
IMGUI_API bool CollapsingHeader(const char *label, ImGuiTreeNodeFlags flags=0)
Definition: imgui_widgets.cpp:5422
ImGui::Text
IMGUI_API void Text(const char *fmt,...) IM_FMTARGS(1)
Definition: imgui_widgets.cpp:238
Blam::DebugUI::ImGUIDrawingGroup::show
bool show
Controls whether or not the group should be shown. May not be used in all groups.
Definition: debug_ui.h:362
Blam::DebugUI::ImGUIDrawingGroup
Class representing an ImGUI drawing group/draw list item.
Definition: debug_ui.h:359
ImGui::PopID
IMGUI_API void PopID()
Definition: imgui.cpp:7026
Triangle
Definition: geometry_test.hpp:8
Blam::DebugUI::Windows::GeometryTest::~GeometryTest
~GeometryTest()
Definition: geometry_test.hpp:62
ImGui::ColorConvertFloat4ToU32
IMGUI_API ImU32 ColorConvertFloat4ToU32(const ImVec4 &in)
Definition: imgui.cpp:1819
Blam::DebugUI::Windows::GeometryTest::GeometryTest
GeometryTest()
Definition: geometry_test.hpp:61
PrimitiveGenericVertex::y
float y
Definition: primitives.h:12
Blam::DebugUI::Windows::GeometryTest
Class for the Geometry Test dialog.
Definition: geometry_test.hpp:26
ImGui::ColorEdit4
IMGUI_API bool ColorEdit4(const char *label, float col[4], ImGuiColorEditFlags flags=0)
Definition: imgui_widgets.cpp:4154
Triangle::y
uint16_t y
Definition: geometry_test.hpp:11
ImGui::DragShort
IMGUI_API bool DragShort(const char *label, short *v, float v_speed=1.0f, short v_min=0, short v_max=0, const char *format="%d")
Definition: imgui_extensions.cpp:3
ImGui::Separator
IMGUI_API void Separator()
Definition: imgui_widgets.cpp:1284
PrimitiveGenericVertex::abgr
uint32_t abgr
Definition: primitives.h:14
Blam::DebugUI::Windows
Legacy namespace to contain data for the legacy ImGUI console.
Definition: ui.h:14
PrimitiveGenericVertex::z
float z
Definition: primitives.h:13
ImGui::TextColored
IMGUI_API void TextColored(const ImVec4 &col, const char *fmt,...) IM_FMTARGS(2)
Definition: imgui_widgets.cpp:257
ImGui::InputFloat
IMGUI_API bool InputFloat(const char *label, float *v, float step=0.0f, float step_fast=0.0f, const char *format="%.3f", ImGuiInputTextFlags flags=0)
Definition: imgui_widgets.cpp:2975
ImGui::PushItemWidth
IMGUI_API void PushItemWidth(float item_width)
Definition: imgui.cpp:6160
ImGui::TextDisabled
IMGUI_API void TextDisabled(const char *fmt,...) IM_FMTARGS(1)
Definition: imgui_widgets.cpp:272
ImGui::PushID
IMGUI_API void PushID(const char *str_id)
Definition: imgui.cpp:6995
ImGui::ColorConvertU32ToFloat4
IMGUI_API ImVec4 ColorConvertU32ToFloat4(ImU32 in)
Definition: imgui.cpp:1809
ImGui::Button
IMGUI_API bool Button(const char *label, const ImVec2 &size=ImVec2(0, 0))
Definition: imgui_widgets.cpp:644
ImGui::InputInt
IMGUI_API bool InputInt(const char *label, int *v, int step=1, int step_fast=100, ImGuiInputTextFlags flags=0)
Definition: imgui_widgets.cpp:3031
imgui_extensions.h