diff options
Diffstat (limited to 'src/3d/visual_debug.cc')
| -rw-r--r-- | src/3d/visual_debug.cc | 29 |
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) { |
