122 Polygon::Type::ConditionalEdge |
123 Polygon::Type::ConditionalEdge |
123 }; |
124 }; |
124 |
125 |
125 constexpr int NUM_POLYGON_TYPES = countof(POLYGON_TYPES); |
126 constexpr int NUM_POLYGON_TYPES = countof(POLYGON_TYPES); |
126 |
127 |
127 inline Polygon edgeLine(const glm::vec3& v_1, const glm::vec3& v_2, ldraw::Color color, ldraw::id_t id) |
128 inline Polygon edgeLine(const Colored<LineSegment>& seg, ModelId id) |
128 { |
129 { |
129 return {Polygon::EdgeLine, {v_1, v_2}, color, id}; |
130 return Polygon{ |
130 } |
131 .type = Polygon::EdgeLine, |
131 |
132 .vertices = {seg.p1, seg.p2}, |
132 inline Polygon triangle( |
133 .color = seg.color, |
133 const glm::vec3& v_1, |
134 .id = id, |
134 const glm::vec3& v_2, |
135 }; |
135 const glm::vec3& v_3, |
136 } |
136 ldraw::Color color, |
137 |
137 ldraw::id_t id) |
138 inline Polygon triangle(const Colored<Triangle>& tri, ModelId id) |
138 { |
139 { |
139 return {Polygon::Triangle, {v_1, v_2, v_3}, color, id}; |
140 return Polygon{ |
140 } |
141 .type = Polygon::Triangle, |
141 |
142 .vertices = {tri.p1, tri.p2, tri.p3}, |
142 inline Polygon quadrilateral( |
143 .color = tri.color, |
143 const glm::vec3& v_1, |
144 .id = id, |
144 const glm::vec3& v_2, |
145 }; |
145 const glm::vec3& v_3, |
146 } |
146 const glm::vec3& v_4, |
147 |
147 ldraw::Color color, |
148 inline Polygon quadrilateral(const Colored<Quadrilateral>& quad, ModelId id) |
148 ldraw::id_t id) |
149 { |
149 { |
150 return Polygon{ |
150 return {Polygon::Quadrilateral, {v_1, v_2, v_3, v_4}, color, id}; |
151 .type = Polygon::Quadrilateral, |
151 } |
152 .vertices = {quad.p1, quad.p2, quad.p3, quad.p4}, |
152 |
153 .color = quad.color, |
153 inline Polygon conditionalEdge( |
154 .id = id, |
154 const glm::vec3& v_1, |
155 }; |
155 const glm::vec3& v_2, |
156 } |
156 const glm::vec3& control_1, |
157 |
157 const glm::vec3& control_2, |
158 inline Polygon conditionalEdge(const Colored<ConditionalEdge>& cedge, ModelId id) |
158 ldraw::Color color, |
159 { |
159 ldraw::id_t id) |
160 return Polygon{ |
160 { |
161 .type = Polygon::ConditionalEdge, |
161 return {Polygon::ConditionalEdge, {v_1, v_2, control_1, control_2}, color, id}; |
162 .vertices = {cedge.p1, cedge.p2, cedge.c1, cedge.c2}, |
|
163 .color = cedge.color, |
|
164 .id = id, |
|
165 }; |
162 } |
166 } |
163 |
167 |
164 // Vbo names |
168 // Vbo names |
165 enum class ArrayClass : std::uint8_t |
169 enum class ArrayClass : std::uint8_t |
166 { |
170 { |