diff -r 6988973515d2 -r ca23936b455b src/gl/common.h --- 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 #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& 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& 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& 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& cedge, ModelId id) + { + return Polygon{ + .type = Polygon::ConditionalEdge, + .vertices = {cedge.p1, cedge.p2, cedge.c1, cedge.c2}, + .color = cedge.color, + .id = id, + }; } // Vbo names