src/modeleditcontext.h

changeset 149
008989bc7d6e
parent 89
7abaf1d64719
--- a/src/modeleditcontext.h	Tue Nov 02 15:43:57 2021 +0200
+++ b/src/modeleditcontext.h	Tue Mar 01 17:00:19 2022 +0200
@@ -26,6 +26,7 @@
 	template<typename T, typename... Args>
 	ldraw::Id<T> append(Args&&... args);
 	ldraw::id_t append(std::unique_ptr<ldraw::Object>&& object);
+	void insertFromState(int position, QByteArray& state);
 	template<typename T, typename... Args>
 	ldraw::Id<T> insert(int position, Args&&... args);
 	void remove(int position);
@@ -35,11 +36,14 @@
 		-> ldraw::Object::SetPropertyResult;
 	void setObjectPoint(ldraw::id_t id, int pointId, const glm::vec3& value);
 	void invertObject(ldraw::id_t id);
+	void deserialize(ldraw::id_t id, QDataStream& stream);
+	ldraw::id_t resolve(int position) const;
 	Model& model();
 private:
 	EditContext(Model& model);
+	void markObjectAsModified(ldraw::id_t id, ldraw::Object* object);
 	friend class Model;
-	QSet<ldraw::id_t> modifiedObjects;
+	QMap<ldraw::id_t, QByteArray> modifiedObjects;
 	Model& storedModel;
 };
 
@@ -49,8 +53,8 @@
 	ldraw::Object* object = this->model().objectAt(id);
 	if (object != nullptr)
 	{
+		this->markObjectAsModified(id, object);
 		object->setProperty<Property>(value);
-		modifiedObjects.insert(id);
 	}
 }
 

mercurial