212 }; |
212 }; |
213 std::vector<Entry> body; |
213 std::vector<Entry> body; |
214 std::map<ModelId, std::size_t> positions; |
214 std::map<ModelId, std::size_t> positions; |
215 ModelId runningId = {1}; |
215 ModelId runningId = {1}; |
216 public: |
216 public: |
217 Model(QObject* parent); |
217 explicit Model(QObject* parent); |
218 virtual ~Model(); |
218 virtual ~Model(); |
219 ModelId append(const ModelElement& value); |
219 ModelId append(const ModelElement& value); |
220 const ModelElement& at(std::size_t position) const; |
220 const ModelElement& at(std::size_t position) const; |
221 ModelId idAt(std::size_t position) const; |
221 ModelId idAt(std::size_t position) const; |
222 void assignAt(std::size_t position, const ModelElement& element); |
222 void assignAt(std::size_t position, const ModelElement& element); |
274 const glm::vec3& p3, |
274 const glm::vec3& p3, |
275 const glm::vec3& p4) |
275 const glm::vec3& p4) |
276 { |
276 { |
277 return Colored<Quadrilateral>{{.p1 = p1, .p2 = p2, .p3 = p3, .p4 = p4}, MAIN_COLOR}; |
277 return Colored<Quadrilateral>{{.p1 = p1, .p2 = p2, .p3 = p3, .p4 = p4}, MAIN_COLOR}; |
278 } |
278 } |
|
279 |
|
280 struct AppendToModel |
|
281 { |
|
282 ModelElement newElement; |
|
283 }; |
|
284 |
|
285 struct DeleteFromModel |
|
286 { |
|
287 std::size_t position; |
|
288 }; |
|
289 |
|
290 struct ModifyModel |
|
291 { |
|
292 std::size_t position; |
|
293 ModelElement newElement; |
|
294 }; |
|
295 |
|
296 using ModelAction = std::variant< |
|
297 AppendToModel, |
|
298 DeleteFromModel, |
|
299 ModifyModel>; |