--- a/src/modeleditcontext.h Mon May 11 12:18:04 2020 +0300 +++ b/src/modeleditcontext.h Mon May 11 12:18:59 2020 +0300 @@ -18,9 +18,6 @@ #pragma once #include "model.h" -#include "linetypes/object.h" -#include "linetypes/quadrilateral.h" -#include "linetypes/triangle.h" class Model::EditContext { @@ -33,15 +30,9 @@ ldraw::Id<T> insert(int position, Args&&... args); void remove(int position); template<ldraw::Property property> - void setObjectProperty(ldraw::id_t id, const ldraw::PropertyType_t<property>& value) - { - ldraw::Object* object = this->model().objectAt(id); - if (object != nullptr) - { - object->setProperty<property>(value); - modifiedObjects.insert(id); - } - } + void setObjectProperty(ldraw::id_t id, const ldraw::PropertyType<property>& value); + auto setObjectProperty(ldraw::id_t id, ldraw::Property property, const QVariant& value) + -> ldraw::Object::SetPropertyResult; void setObjectPoint(ldraw::id_t id, int pointId, const glm::vec3& value); void invertObject(ldraw::id_t id); Model& model(); @@ -52,6 +43,17 @@ Model& storedModel; }; +template<ldraw::Property Property> +void Model::EditContext::setObjectProperty(const ldraw::id_t id, const ldraw::PropertyType<Property>& value) +{ + ldraw::Object* object = this->model().objectAt(id); + if (object != nullptr) + { + object->setProperty<Property>(value); + modifiedObjects.insert(id); + } +} + template<typename T, typename... Args> ldraw::Id<T> Model::EditContext::append(Args&&... args) {