summaryrefslogtreecommitdiff
path: root/src/3d/visual_debug.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/3d/visual_debug.cc')
-rw-r--r--src/3d/visual_debug.cc29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/3d/visual_debug.cc b/src/3d/visual_debug.cc
index daa1033..99d4b9f 100644
--- a/src/3d/visual_debug.cc
+++ b/src/3d/visual_debug.cc
@@ -173,25 +173,22 @@ void VisualDebug::create_pipeline(WGPUTextureFormat format) {
wgpuShaderModuleRelease(shader_module);
}
-void VisualDebug::add_box(const vec3& c, const vec3& e, const vec3& color) {
- // 8 corners
- vec3 p0 = vec3(c.x - e.x, c.y - e.y, c.z - e.z);
- vec3 p1 = vec3(c.x + e.x, c.y - e.y, c.z - e.z);
- vec3 p2 = vec3(c.x + e.x, c.y + e.y, c.z - e.z);
- vec3 p3 = vec3(c.x - e.x, c.y + e.y, c.z - e.z);
- vec3 p4 = vec3(c.x - e.x, c.y - e.y, c.z + e.z);
- vec3 p5 = vec3(c.x + e.x, c.y - e.y, c.z + e.z);
- vec3 p6 = vec3(c.x + e.x, c.y + e.y, c.z + e.z);
- vec3 p7 = vec3(c.x - e.x, c.y + e.y, c.z + e.z);
+void VisualDebug::add_box(const mat4& transform, const vec3& color) {
+ // 8 corners of unit cube [-1, 1]
+ vec4 p[] = {
+ transform * vec4(-1, -1, -1, 1), transform * vec4(1, -1, -1, 1),
+ transform * vec4(1, 1, -1, 1), transform * vec4(-1, 1, -1, 1),
+ transform * vec4(-1, -1, 1, 1), transform * vec4(1, -1, 1, 1),
+ transform * vec4(1, 1, 1, 1), transform * vec4(-1, 1, 1, 1)};
// 12 edges (each 2 vertices)
DebugLine edges[] = {
- {p0, p1, color}, {p1, p2, color},
- {p2, p3, color}, {p3, p0, color}, // Front face
- {p4, p5, color}, {p5, p6, color},
- {p6, p7, color}, {p7, p4, color}, // Back face
- {p0, p4, color}, {p1, p5, color},
- {p2, p6, color}, {p3, p7, color} // Connecting edges
+ {p[0].xyz(), p[1].xyz(), color}, {p[1].xyz(), p[2].xyz(), color},
+ {p[2].xyz(), p[3].xyz(), color}, {p[3].xyz(), p[0].xyz(), color}, // Front face
+ {p[4].xyz(), p[5].xyz(), color}, {p[5].xyz(), p[6].xyz(), color},
+ {p[6].xyz(), p[7].xyz(), color}, {p[7].xyz(), p[4].xyz(), color}, // Back face
+ {p[0].xyz(), p[4].xyz(), color}, {p[1].xyz(), p[5].xyz(), color},
+ {p[2].xyz(), p[6].xyz(), color}, {p[3].xyz(), p[7].xyz(), color} // Connecting edges
};
for (const auto& l : edges) {