VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtModelDefinitionManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #pragma once
10 
13 
15 
17 
18 #include <string>
19 #include <vrvUtil/signalslib.h>
20 
21 namespace makVrv
22 {
23  class DtDe;
24  class DtModelDefinitionManagerSignaler;
25  class DtModelDefinitionBackup;
26  class DtModelDefinitionManager;
27 
32  {
33  public:
36 
37  protected:
40  virtual void restore(const DtSettingsBackup* from);
41 
44  virtual std::string backupClassType() const;
45  virtual std::string backupName() const;
46 
49  virtual DtSettingsBackup* create() const;
50 
53  virtual void write(boost::archive::xml_oarchive& ar);
54 
57  virtual void read(boost::archive::xml_iarchive& ar);
58 
61  virtual void readIncremental(boost::archive::xml_iarchive& ar);
62 
64  {
65  return myRestoredManager;
66  }
67 
68  protected:
72  };
73 
79  {
81 
82  public:
83  typedef std::map<std::string, DtModelDefinition> DefinitionMap;
84 
90  static bool getFloatParameterValueFromDefinition(
91  const std::string& paramName, const DtModelDefinition& definition, float& result);
92 
98  static bool getVectorParameterValueFromDefinition(
99  const std::string& paramName, const DtModelDefinition& definition, float(&result)[3]);
100 
106  static bool getColorParameterValueFromDefinition(
107  const std::string& paramName, const DtModelDefinition& definition, float(&result)[4]);
108 
109  public:
111  virtual ~DtModelDefinitionManager();
112 
114  virtual void loadDefinitions();
115 
118  virtual bool skipDefaultDefinitions();
119 
121  virtual void saveDefinitions();
122 
125  virtual void saveAllDefinitions();
126 
129  virtual void saveDefinitions(const std::string&);
130 
131 
135  virtual void addDefinition(const DtModelDefinition& definition, bool autoSave = true);
136 
140  virtual void destroyDefinition(const DtModelDefinition& def);
141 
145  const DtModelDefinition* findDefinition(const std::string& modelName) const;
146 
149  DtModelDefinition* findDefinitionNonConst(const std::string& modelName);
150 
152  const DefinitionMap& definitions() const;
153  DefinitionMap& definitions();
154 
156  void renameDefinition(const std::string& oldModelName, const std::string& newModelName);
157 
159  const std::string& modelFilename() const;
160 
162  void setModelFilename(const std::string& extension);
163 
165  bool modelInstancingEnabled() const;
166 
168  void setModelInstancingEnabled(bool enabled);
169 
171  void clearModelInstancingCache();
172 
174  void clear();
175 
179  virtual void merge(const DtModelDefinitionManager&);
180 
186  virtual bool loadModelDefinitions(const std::string& filename, bool merge = true);
187 
192  virtual bool loadModelDefinition(const std::string& filename);
193 
196  virtual bool exportToFile(const std::vector<std::string>& defs, const std::string& filename) const;
197 
199  virtual bool schemaInUse(const std::string&) const;
200 
202  virtual bool schemaInUse(const std::string&, std::vector<std::string>&) const;
203 
205  virtual void backup();
206 
208  virtual bool mergeModelDefinitions(const std::string& fileOrDirName);
209 
211  virtual bool modifiedSinceStartup();
212 
214  virtual void addToModifiedDefinitionsMap(DtModelDefinition modelDefinition);
215 
217  virtual void addToAddedDefinitionsMap(DtModelDefinition modelDefinition);
218 
220  virtual void addToDeletedDefinitionsMap(DtModelDefinition modelDefinition);
221 
223  virtual void resetModifiedFlags();
224 
226  virtual int getNumOfDefinitionsExcludeTerrain();
227 
229  {
230  return myBackup;
231  }
232 
234  {
235  return myBackup;
236  }
237 
239  virtual DtModelDefinitionManager& operator=(const DtModelDefinitionManager&);
240 
242  void setAutoSave(bool b)
243  {
244  myAutoSave = b;
245  }
246 
247  bool autoSave() const
248  {
249  return myAutoSave;
250  }
251 
253  virtual void removeNonPersistentItems();
254 
255  protected:
256 
258 
262 
263  protected:
264  friend class boost::serialization::access;
265 
266  template <typename Archive>
267  void serialize(Archive& ar,unsigned int version)
268  {
269  ar & BOOST_SERIALIZATION_NVP(myDefinitions);
270  }
271 
272  protected:
273 
276  std::string myModelFileName;
277  std::string myModelFileExtension;
279 
281 
289 
290  private:
291  bool loadModelDefinitionsFromXML(const std::string& filename, bool shouldMerge);
292  bool loadModelDefinitionsFromBinary(const std::string& filename, bool shouldMerge);
293  };
294 
298  {
299  public:
300 
302  static DtModelDefinitionManagerSignaler& instance(DtDe& de);
303 
306 
308  boost::signalslib::signal<void ()> signal_modelDefinitionManagerReset;
309 
311  boost::signalslib::signal<void (const DtModelDefinition&)> signal_modelDefinitionAdded;
312 
314  boost::signalslib::signal<void (const DtModelDefinition&)> signal_modelDefinitionToBeRemoved;
315 
316  protected:
317 
319 
320  };
321 
325  {
326  public:
329 
332 
336  static DtModelDefinitionManagerCreator& instance(DtDe& de);
337 
339  virtual DtModelDefinitionManager* create(DtDe&);
340  };
341 }
342 
344 
the Signals for DtModelDefinitionManager
Definition: DtModelDefinitionManager.h:297
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 3)
std::string myModelFileExtension
Definition: DtModelDefinitionManager.h:277
The model definition manager is responsible to managing all of the model definitions the IG knows abo...
Definition: DtModelDefinitionManager.h:78
void serialize(Archive &ar, unsigned int version)
Definition: DtModelDefinitionManager.h:267
boost::signalslib::signal< void()> signal_modelDefinitionManagerReset
Signal emitted when the model definition manager is reset.
Definition: DtModelDefinitionManager.h:308
DefinitionMap myDefinitions
Definition: DtModelDefinitionManager.h:275
const DtSettingsBackup * settingsBackup() const
Definition: DtModelDefinitionManager.h:228
DefinitionMap myModifiedDefinitions
Definition: DtModelDefinitionManager.h:286
bool myModelInstancingFlag
Definition: DtModelDefinitionManager.h:282
DtModelDefinitionManagerBackup is the settings backup object for DtModelDefinitions.
Definition: DtModelDefinitionManager.h:31
boost::signalslib::signal< void(const DtModelDefinition &)> signal_modelDefinitionToBeRemoved
Signal emitted when a model definition is to be destroyed.
Definition: DtModelDefinitionManager.h:314
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:42
bool myAutoSave
Definition: DtModelDefinitionManager.h:278
void setAutoSave(bool b)
Sets whether or not to automatically save model definition manager on any change. Default is true...
Definition: DtModelDefinitionManager.h:242
std::map< std::string, DtModelDefinition > DefinitionMap
Definition: DtModelDefinitionManager.h:83
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
bool autoSave() const
Definition: DtModelDefinitionManager.h:247
DtModelDefinitionManager * myRestoredManager
Definition: DtModelDefinitionManager.h:71
std::string myModelFileName
Definition: DtModelDefinitionManager.h:276
Creator for DtModelDefinitionManager class.
Definition: DtModelDefinitionManager.h:324
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtSettingsBackup * settingsBackup()
Definition: DtModelDefinitionManager.h:233
Interaction makVrv::DtModelDefinition class.
Provides a method of doign settings backup.
Definition: DtSettingsBackup.h:23
int myStartupNumOfDefinition
Definition: DtModelDefinitionManager.h:285
DefinitionMap myDeletedDefinitions
Definition: DtModelDefinitionManager.h:288
const DtModelDefinitionManager * restoredManager() const
Definition: DtModelDefinitionManager.h:63
DtDe & myDe
Definition: DtModelDefinitionManager.h:274
Base class to provide boost signal/slot management.
boost::signalslib::signal< void(const DtModelDefinition &)> signal_modelDefinitionAdded
Signal emitted when a model definition is added.
Definition: DtModelDefinitionManager.h:311
Contains makVrv::DtModelDefinitionRecord class.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
DtModelDefinitionManagerSignaler & mySignaler
Definition: DtModelDefinitionManager.h:283
DtModelDefinitionManager & mySourceManager
Definition: DtModelDefinitionManager.h:69
DefinitionMap myAddedDefinitions
Definition: DtModelDefinitionManager.h:287
DtDe & myDe
Definition: DtModelDefinitionManager.h:70
DtSignalConnectionManager myConnectionManager
Definition: DtModelDefinitionManager.h:280
DtModelDefinitionManagerBackup * myBackup
Definition: DtModelDefinitionManager.h:284

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)