src/modeleditcontext.h

changeset 86
4bec0525ef1b
parent 76
7c4a63a02632
child 89
7abaf1d64719
--- a/src/modeleditcontext.h	Wed Mar 18 17:11:23 2020 +0200
+++ b/src/modeleditcontext.h	Thu Mar 19 21:06:06 2020 +0200
@@ -25,21 +25,30 @@
 class Model::EditContext
 {
 public:
+	~EditContext();
 	template<typename T, typename... Args>
 	ldraw::Id<T> append(Args&&... args);
 	ldraw::id_t append(std::unique_ptr<ldraw::Object>&& object);
 	template<typename T, typename... Args>
 	ldraw::Id<T> insert(int position, Args&&... args);
 	void remove(int position);
-	void setObjectProperty(
-		ldraw::id_t object,
-		ldraw::Property property,
-		const QVariant &value);
+	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 setObjectPoint(ldraw::id_t id, int pointId, const glm::vec3& value);
 	void invertObject(ldraw::id_t id);
 	Model& model();
 private:
 	EditContext(Model& model);
 	friend class Model;
+	QSet<ldraw::id_t> modifiedObjects;
 	Model& storedModel;
 };
 

mercurial