src/gl/common.h

changeset 200
ca23936b455b
parent 189
815fbaae9cb2
child 206
654661eab7f3
--- a/src/gl/common.h	Wed May 25 20:36:34 2022 +0300
+++ b/src/gl/common.h	Mon Jun 06 22:01:22 2022 +0300
@@ -27,6 +27,7 @@
 #include <glm/gtc/type_ptr.hpp>
 #include "basics.h"
 #include "colors.h"
+#include "model.h"
 
 namespace gl
 {
@@ -77,7 +78,7 @@
 	} type;
 	glm::vec3 vertices[4];
 	ldraw::Color color;
-	ldraw::id_t id;
+	ModelId id;
 
 	/**
 	 * @return amount of vertices used for geometry
@@ -124,41 +125,44 @@
 
 	constexpr int NUM_POLYGON_TYPES = countof(POLYGON_TYPES);
 
-	inline Polygon edgeLine(const glm::vec3& v_1, const glm::vec3& v_2, ldraw::Color color, ldraw::id_t id)
+	inline Polygon edgeLine(const Colored<LineSegment>& seg, ModelId id)
 	{
-		return {Polygon::EdgeLine, {v_1, v_2}, color, id};
-	}
-
-	inline Polygon triangle(
-		const glm::vec3& v_1,
-		const glm::vec3& v_2,
-		const glm::vec3& v_3,
-		ldraw::Color color,
-		ldraw::id_t id)
-	{
-		return {Polygon::Triangle, {v_1, v_2, v_3}, color, id};
+		return Polygon{
+			.type = Polygon::EdgeLine,
+			.vertices = {seg.p1, seg.p2},
+			.color = seg.color,
+			.id = id,
+		};
 	}
 
-	inline Polygon quadrilateral(
-		const glm::vec3& v_1,
-		const glm::vec3& v_2,
-		const glm::vec3& v_3,
-		const glm::vec3& v_4,
-		ldraw::Color color,
-		ldraw::id_t id)
+	inline Polygon triangle(const Colored<Triangle>& tri, ModelId id)
 	{
-		return {Polygon::Quadrilateral, {v_1, v_2, v_3, v_4}, color, id};
+		return Polygon{
+			.type = Polygon::Triangle,
+			.vertices = {tri.p1, tri.p2, tri.p3},
+			.color = tri.color,
+			.id = id,
+		};
 	}
 
-	inline Polygon conditionalEdge(
-		const glm::vec3& v_1,
-		const glm::vec3& v_2,
-		const glm::vec3& control_1,
-		const glm::vec3& control_2,
-		ldraw::Color color,
-		ldraw::id_t id)
+	inline Polygon quadrilateral(const Colored<Quadrilateral>& quad, ModelId id)
 	{
-		return {Polygon::ConditionalEdge, {v_1, v_2, control_1, control_2}, color, id};
+		return Polygon{
+			.type = Polygon::Quadrilateral,
+			.vertices = {quad.p1, quad.p2, quad.p3, quad.p4},
+			.color = quad.color,
+			.id = id,
+		};
+	}
+
+	inline Polygon conditionalEdge(const Colored<ConditionalEdge>& cedge, ModelId id)
+	{
+		return Polygon{
+			.type = Polygon::ConditionalEdge,
+			.vertices = {cedge.p1, cedge.p2, cedge.c1, cedge.c2},
+			.color = cedge.color,
+			.id = id,
+		};
 	}
 
 	// Vbo names

mercurial