src/modeleditcontext.h

changeset 86
4bec0525ef1b
parent 76
7c4a63a02632
child 89
7abaf1d64719
equal deleted inserted replaced
85:40e2940605a3 86:4bec0525ef1b
23 #include "linetypes/triangle.h" 23 #include "linetypes/triangle.h"
24 24
25 class Model::EditContext 25 class Model::EditContext
26 { 26 {
27 public: 27 public:
28 ~EditContext();
28 template<typename T, typename... Args> 29 template<typename T, typename... Args>
29 ldraw::Id<T> append(Args&&... args); 30 ldraw::Id<T> append(Args&&... args);
30 ldraw::id_t append(std::unique_ptr<ldraw::Object>&& object); 31 ldraw::id_t append(std::unique_ptr<ldraw::Object>&& object);
31 template<typename T, typename... Args> 32 template<typename T, typename... Args>
32 ldraw::Id<T> insert(int position, Args&&... args); 33 ldraw::Id<T> insert(int position, Args&&... args);
33 void remove(int position); 34 void remove(int position);
34 void setObjectProperty( 35 template<ldraw::Property property>
35 ldraw::id_t object, 36 void setObjectProperty(ldraw::id_t id, const ldraw::PropertyType_t<property>& value)
36 ldraw::Property property, 37 {
37 const QVariant &value); 38 ldraw::Object* object = this->model().objectAt(id);
39 if (object != nullptr)
40 {
41 object->setProperty<property>(value);
42 modifiedObjects.insert(id);
43 }
44 }
45 void setObjectPoint(ldraw::id_t id, int pointId, const glm::vec3& value);
38 void invertObject(ldraw::id_t id); 46 void invertObject(ldraw::id_t id);
39 Model& model(); 47 Model& model();
40 private: 48 private:
41 EditContext(Model& model); 49 EditContext(Model& model);
42 friend class Model; 50 friend class Model;
51 QSet<ldraw::id_t> modifiedObjects;
43 Model& storedModel; 52 Model& storedModel;
44 }; 53 };
45 54
46 template<typename T, typename... Args> 55 template<typename T, typename... Args>
47 ldraw::Id<T> Model::EditContext::append(Args&&... args) 56 ldraw::Id<T> Model::EditContext::append(Args&&... args)

mercurial