VR-Forces 5.0.1 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) 2021 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  DtModelDefinition* findDefinition(const std::string& modelName) const;
146 
148  const DefinitionMap& definitions() const;
149  DefinitionMap& definitions();
150 
152  void renameDefinition(const std::string& oldModelName, const std::string& newModelName);
153 
155  const std::string& modelFilename() const;
156 
158  void setModelFilename(const std::string& extension);
159 
161  bool modelInstancingEnabled() const;
162 
164  void setModelInstancingEnabled(bool enabled);
165 
167  void clearModelInstancingCache();
168 
170  void clear();
171 
175  virtual void merge(const DtModelDefinitionManager&);
176 
182  virtual bool loadModelDefinitions(const std::string& filename, bool merge = true);
183 
188  virtual bool loadModelDefinition(const std::string& filename);
189 
192  virtual bool exportToFile(const std::vector<std::string>& defs, const std::string& filename) const;
193 
195  virtual bool schemaInUse(const std::string&) const;
196 
198  virtual bool schemaInUse(const std::string&, std::vector<std::string>&) const;
199 
201  virtual void backup();
202 
204  virtual bool mergeModelDefinitions(const std::string& fileOrDirName);
205 
207  virtual bool modifiedSinceStartup();
208 
210  virtual void addToModifiedDefinitionsMap(DtModelDefinition modelDefinition);
211 
213  virtual void addToAddedDefinitionsMap(DtModelDefinition modelDefinition);
214 
216  virtual void addToDeletedDefinitionsMap(DtModelDefinition modelDefinition);
217 
219  virtual void resetModifiedFlags();
220 
222  virtual int getNumOfDefinitionsExcludeTerrain();
223 
225  {
226  return myBackup;
227  }
228 
230  {
231  return myBackup;
232  }
233 
235  virtual DtModelDefinitionManager& operator=(const DtModelDefinitionManager&);
236 
238  void setAutoSave(bool b)
239  {
240  myAutoSave = b;
241  }
242 
243  bool autoSave() const
244  {
245  return myAutoSave;
246  }
247 
249  virtual void removeNonPersistentItems();
250 
251  protected:
252 
254 
258 
259  protected:
260  friend class boost::serialization::access;
261 
262  template <typename Archive>
263  void serialize(Archive& ar,unsigned int version)
264  {
265  ar & BOOST_SERIALIZATION_NVP(myDefinitions);
266  }
267 
268  protected:
269 
272  std::string myModelFileName;
273  std::string myModelFileExtension;
275 
277 
285 
286  private:
287  bool loadModelDefinitionsFromXML(const std::string& filename, bool shouldMerge);
288  bool loadModelDefinitionsFromBinary(const std::string& filename, bool shouldMerge);
289  };
290 
294  {
295  public:
296 
298  static DtModelDefinitionManagerSignaler& instance(DtDe& de);
299 
302 
304  boost::signalslib::signal<void ()> signal_modelDefinitionManagerReset;
305 
307  boost::signalslib::signal<void (const DtModelDefinition&)> signal_modelDefinitionAdded;
308 
310  boost::signalslib::signal<void (const DtModelDefinition&)> signal_modelDefinitionToBeRemoved;
311 
312  protected:
313 
315 
316  };
317 
321  {
322  public:
325 
328 
332  static DtModelDefinitionManagerCreator& instance(DtDe& de);
333 
335  virtual DtModelDefinitionManager* create(DtDe&);
336  };
337 }
338 
340 
the Signals for DtModelDefinitionManager
Definition: DtModelDefinitionManager.h:293
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:273
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:263
boost::signalslib::signal< void()> signal_modelDefinitionManagerReset
Signal emitted when the model definition manager is reset.
Definition: DtModelDefinitionManager.h:304
DefinitionMap myDefinitions
Definition: DtModelDefinitionManager.h:271
const DtSettingsBackup * settingsBackup() const
Definition: DtModelDefinitionManager.h:224
DefinitionMap myModifiedDefinitions
Definition: DtModelDefinitionManager.h:282
bool myModelInstancingFlag
Definition: DtModelDefinitionManager.h:278
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:310
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:38
bool myAutoSave
Definition: DtModelDefinitionManager.h:274
void setAutoSave(bool b)
Sets whether or not to automatically save model definition manager on any change. Default is true...
Definition: DtModelDefinitionManager.h:238
std::map< std::string, DtModelDefinition > DefinitionMap
Definition: DtModelDefinitionManager.h:83
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
bool autoSave() const
Definition: DtModelDefinitionManager.h:243
DtModelDefinitionManager * myRestoredManager
Definition: DtModelDefinitionManager.h:71
std::string myModelFileName
Definition: DtModelDefinitionManager.h:272
Creator for DtModelDefinitionManager class.
Definition: DtModelDefinitionManager.h:320
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtSettingsBackup * settingsBackup()
Definition: DtModelDefinitionManager.h:229
Interaction makVrv::DtModelDefinition class.
Provides a method of doign settings backup.
Definition: DtSettingsBackup.h:23
int myStartupNumOfDefinition
Definition: DtModelDefinitionManager.h:281
DefinitionMap myDeletedDefinitions
Definition: DtModelDefinitionManager.h:284
const DtModelDefinitionManager * restoredManager() const
Definition: DtModelDefinitionManager.h:63
DtDe & myDe
Definition: DtModelDefinitionManager.h:270
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:307
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:70
DtModelDefinitionManagerSignaler & mySignaler
Definition: DtModelDefinitionManager.h:279
DtModelDefinitionManager & mySourceManager
Definition: DtModelDefinitionManager.h:69
DefinitionMap myAddedDefinitions
Definition: DtModelDefinitionManager.h:283
DtDe & myDe
Definition: DtModelDefinitionManager.h:70
DtSignalConnectionManager myConnectionManager
Definition: DtModelDefinitionManager.h:276
DtModelDefinitionManagerBackup * myBackup
Definition: DtModelDefinitionManager.h:280

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)