@ElmData.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536
  1. /******************************************************************************/
  2. /******************************************************************************/
  3. class ElmData // !! IMPORTANT: all classes extending 'ElmData' must override 'undo' and 'sync' methods, and adjust 'ver' !!
  4. {
  5. Version ver; // value randomized each time the data is changed indicating that client/server sync is needed
  6. Str src_file; // can have multiple files and parameters, encoded using 'Edit.FileParams'
  7. TimeStamp src_file_time;
  8. // get
  9. bool equal(C ElmData &src)C;
  10. bool newer(C ElmData &src)C;
  11. virtual bool mayContain (C UID &id)C;
  12. virtual bool containsTex(C UID &id, bool test_merged)C;
  13. virtual void listTexs (MemPtr<UID> texs)C;
  14. // operations
  15. void newVer ();
  16. virtual void newData();
  17. void setSrcFile(C Str &src_file, C TimeStamp&time=TimeStamp().getUTC());
  18. uint undoSrcFile(C ElmData &src);
  19. uint undo(C ElmData &src);
  20. uint sync(C ElmData &src);
  21. virtual void clearLinked(); // this should clear the specially linked objects (such as obj->mesh, mesh->skel,phys, skel->mesh, phys->mesh)
  22. // io
  23. virtual bool save(File &f)C;
  24. virtual bool load(File &f);
  25. virtual void save(MemPtr<TextNode> nodes)C;
  26. virtual void load(C MemPtr<TextNode> &nodes);
  27. virtual ~ElmData();
  28. };
  29. /******************************************************************************/
  30. /******************************************************************************/
  31. /******************************************************************************/