src/modeleditcontext.h

changeset 89
7abaf1d64719
parent 86
4bec0525ef1b
child 149
008989bc7d6e
child 151
e628fc2e0c72
--- 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)
 {

mercurial