summary refs log tree commit diff
path: root/src/GFX/Util/MeshBuilder.hpp
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2023-07-12 03:39:01 +0200
committerMel <einebeere@gmail.com>2023-07-12 03:39:01 +0200
commitf09e5791837bb003f7c5db8c0e3162636bc9a9c2 (patch)
tree36b9a007f119388bb7943489e8d203de04269483 /src/GFX/Util/MeshBuilder.hpp
parent0ce26f2a49fd6d64a690b84b1932126edfbfbee6 (diff)
downloadmeowcraft-f09e5791837bb003f7c5db8c0e3162636bc9a9c2.tar.zst
meowcraft-f09e5791837bb003f7c5db8c0e3162636bc9a9c2.zip
3D Clouds
Diffstat (limited to 'src/GFX/Util/MeshBuilder.hpp')
-rw-r--r--src/GFX/Util/MeshBuilder.hpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/GFX/Util/MeshBuilder.hpp b/src/GFX/Util/MeshBuilder.hpp
index e3caa8c..c174b8c 100644
--- a/src/GFX/Util/MeshBuilder.hpp
+++ b/src/GFX/Util/MeshBuilder.hpp
@@ -2,6 +2,7 @@
 
 #include "../../Common/Sizes.hpp"
 #include "../../Math/Common.hpp"
+#include "Primitives.hpp"
 #include <vector>
 
 namespace MC::GFX::Util {
@@ -53,6 +54,18 @@ public:
         m_indices.insert(m_indices.end(), from.begin(), from.end());
     }
 
+    template<uint PN>
+    void primitive(const Primitives::Primitive<PN>& primitive) {
+        decltype(primitive.indices) relativized_indices{};
+        for (Int i = 0; i < primitive.indices.size(); i++) {
+            relativized_indices[i] = primitive.indices[i] + m_positions.size();
+        }
+
+        positions(primitive.positions);
+        attributes<0>(primitive.normals);
+        indices(relativized_indices);
+    }
+
     Mesh mesh() {
         return mesh(std::make_index_sequence<AttributesN>{});
     }