]> git.localhorst.tv Git - blank.git/blobdiff - src/graphics/mesh.cpp
render entity bounds in debug mode
[blank.git] / src / graphics / mesh.cpp
index 3aa631eb77e5e266f156d9516e75760ed92f5c28..4a63d99c8f56a2f87612e4dd83748abe90324971 100644 (file)
@@ -4,6 +4,8 @@
 #include "SkyBoxMesh.hpp"
 #include "SpriteMesh.hpp"
 
+#include "../model/geometry.hpp"
+
 #include <algorithm>
 #include <iostream>
 
@@ -90,6 +92,28 @@ void PrimitiveMesh::Buffer::FillRect(
        indices.assign({ 0, 2, 1, 1, 2, 3 });
 }
 
+void PrimitiveMesh::Buffer::OutlineBox(const AABB &box, const glm::vec4 &color) {
+       Clear();
+       Reserve(8, 24);
+
+       vertices.emplace_back(box.min.x, box.min.y, box.min.z);
+       vertices.emplace_back(box.min.x, box.min.y, box.max.z);
+       vertices.emplace_back(box.min.x, box.max.y, box.min.z);
+       vertices.emplace_back(box.min.x, box.max.y, box.max.z);
+       vertices.emplace_back(box.max.x, box.min.y, box.min.z);
+       vertices.emplace_back(box.max.x, box.min.y, box.max.z);
+       vertices.emplace_back(box.max.x, box.max.y, box.min.z);
+       vertices.emplace_back(box.max.x, box.max.y, box.max.z);
+
+       colors.resize(8, color);
+
+       indices.assign({
+               0, 1, 1, 3, 3, 2, 2, 0, // left
+               4, 5, 5, 7, 7, 6, 6, 4, // right
+               0, 4, 1, 5, 3, 7, 2, 6, // others
+       });
+}
+
 
 void PrimitiveMesh::Update(const Buffer &buf) noexcept {
 #ifndef NDEBUG