VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtModelDefinition.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 
16 
17 #include <vrvUtil/DtKeywordMixin.h>
18 
19 #include <boost/serialization/version.hpp>
20 #include <boost/unordered_map.hpp>
21 #include <boost/thread/recursive_mutex.hpp>
22 
23 #include <matrix/vlVector.h>
24 #include <map>
25 
26 #include <vrvMath/DtVector3.h>
27 #include <vrvMath/DtVector4.h>
28 
29 namespace makArchives
30 {
31  class DtModelDefinitionRecord;
32 }
33 
34 namespace makVrv
35 {
36  class DtVirtualBaseClass;
37 
43  {
44  public:
45 
46  //Global public empty string.
47  static const std::string theEmptyString;
48 
52  {
53  struct comp
54  {
55  bool operator() (const unsigned char& c1, const unsigned char& c2) const;
56  };
57 
58  bool operator() (const std::string& s1, const std::string& s2) const;
59  };
60 
61  typedef std::map<std::string, std::string, CaseInsensitiveFunc> ParameterMap;
62 
63 
68  DtModelDefinition(const std::string& modelName = "");
69 
72 
74  DtModelDefinition(const std::string& modelName, const DtModelDefinition& copy);
75 
77  virtual ~DtModelDefinition();
78 
81  DtModelDefinition& operator=(const DtModelDefinition&);
82 
85  bool operator==(const DtModelDefinition&) const;
86 
89  bool operator!=(const DtModelDefinition&) const;
90 
92  virtual void getRecord(makArchives::DtModelDefinitionRecord& rec) const;
93 
95  virtual void setFromRecord(const makArchives::DtModelDefinitionRecord& rec);
96 
109 
113  void clearCache();
114 
117  DtVirtualBaseClass* findCachedData(const std::string& name) const;
118 
122  void setCachedData(const std::string& name, DtVirtualBaseClass* data);
123 
125  inline void deleteCachedData(const std::string& name)
126  {
127  setCachedData(name, 0);
128  }
129 
135  void setParameter(const std::string& parameterName,
136  const std::string& parameterValue);
137 
142  bool clearParameter(const std::string& parameterName);
143 
148  const std::string& parameter(const std::string& parameterName) const;
149 
156  const std::string* findParameter(const std::string& parameterName) const;
157 
159  const ParameterMap& parameters() const;
160 
162  const std::string& name() const;
163 
165  const std::string& fileName() const;
166 
168  const std::string& schema() const;
169 
172  const std::vector<std::string>& listOfSharedFiles() const;
173 
176  void addToListOfSharedFiles(const std::string& sharedFile);
177 
179  void setSchema(const std::string& schemaStr);
180 
182  void setFileName(const std::string& fileNameStr);
183 
185  void setPersistent(bool persistent);
186 
188  bool persistent() const;
189 
191  bool modified() const;
192  void setModified(bool);
193 
194  bool duplicate() const;
195  void setDuplicate(bool);
196 
198  const void getVectorParameter(const std::string& parameterName, DtVector& parameterVector) const;
199 
201  //void addKeyWord( const std::string& keyword);
202 
204  //void removeKeyWord( const std::string& keyword);
205 
207  //const std::set<std::string>& keyWords() const;
208 
212  //bool hasKeyWords(const std::set<std::string>&) const;
213 
215  boost::recursive_mutex& modelLoadingMutex();
216 
218  virtual bool replaceParameter(const std::string& findWhat, const std::string& replaceWith);
219 
221  virtual DtVector3<float> readVec3(const std::string& paramName, const DtVector3<float>& initValue) const;
222 
224  virtual DtVector4<float> readVec4(const std::string& paramName, const DtVector4<float>& initValue) const;
225 
227  virtual bool getAltitudeBasedScaleConfigurationRecordCollectionParameter(const std::string& parameterName,
229 
231  virtual bool getBoolean(const std::string& parameterName, bool& parameterValue) const;
232 
234  virtual bool getDouble(const std::string& parameterName, double& parameterValue) const;
235 
236  protected:
237 
239  {
240  public:
241  template <typename Archive>
242  void serialize(Archive& ar, unsigned int version)
243  {
245  }
246  };
247 
248  typedef boost::unordered_map<std::string, DtVirtualBaseClass*> CacheMap;
249 
250  template <typename Archive>
251  void _serialize(Archive& ar, unsigned int version)
252  {
253  ar & DT_SERIALIZE_MEMBER(myName);
254 
255  //If not initial version.
256  if (version > 1)
257  {
258  ar& DT_SERIALIZE_MEMBER(mySchema);
259  }
260  ar & DT_SERIALIZE_MEMBER(myParameters);
261 
262  if (version > 2)
263  {
264  ar & DT_SERIALIZE_MEMBER(myKeywords);
265  }
266 
267  //We're no longer modified if we save or load.
268  myModifiedFlag = false;
269  }
270 
271  std::string myName;
272  std::string myFileName;
273 
274  std::string mySchema;
275  std::vector<std::string> myListOfSharedFiles;
277 
279 
285 
286  boost::recursive_mutex myModelLoadingMutex;
287 
288  };
289 }
290 
boost::recursive_mutex myModelLoadingMutex
Definition: DtModelDefinition.h:286
Contains the DtAltitudeBasedScaleConfigurationRecord class declaration.
bool myDuplicateFlag
Definition: DtModelDefinition.h:284
#define DT_DECLARE_PORTABLE_serialize_FUNCTIONS
Definition: DtSerialize.h:129
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 myFileName
Definition: DtModelDefinition.h:272
#define DT_SERIALIZE_BASE(BASE_CLASS)
Serialize the base class implementation.
Definition: DtSerialize.h:161
The DtKeyword mixin is a mixin class (add funcionality by inheritence) for adding generic keywords to...
Definition: DtKeywordMixin.h:23
bool myPersistentFlag
Definition: DtModelDefinition.h:282
std::map< std::string, std::string, CaseInsensitiveFunc > ParameterMap
Definition: DtModelDefinition.h:61
bool myModifiedFlag
Definition: DtModelDefinition.h:283
4 dimensional vector
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:42
A DtModelDefinitionRecord will serialize a terrain patch model definition.
Definition: DtModelDefinitionRecord.h:20
std::string myName
Definition: DtModelDefinition.h:271
SerializableParameterMap myParameters
Definition: DtModelDefinition.h:276
A helper structure used to contain a compare operator for use with a case insensitive std::map...
Definition: DtModelDefinition.h:51
3 dimensional vector
#define DT_DECLARE_serialize_FUNCTIONS
Declare all the serialize functions to use.
Definition: DtSerialize.h:120
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Definition: DtModelDefinition.h:238
boost::unordered_map< std::string, DtVirtualBaseClass * > CacheMap
Definition: DtModelDefinition.h:248
void _serialize(Archive &ar, unsigned int version)
Definition: DtModelDefinition.h:251
std::vector< std::string > myListOfSharedFiles
Definition: DtModelDefinition.h:275
bool operator==(const DtTextureAtlasIndexParser::StringOrFloatAttrib &lhs, const DtTextureAtlasIndexParser::StringOrFloatAttrib &rhs)
needed for search comparison code
Definition: DtTextureAtlasIndexParser.h:160
static const std::string theEmptyString
Definition: DtModelDefinition.h:47
Mixin that provides set of keywords functionality.
std::string mySchema
Definition: DtModelDefinition.h:274
DT_DLL_terrainCS bool operator!=(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
#define DT_SERIALIZE_MEMBER(NAME)
Serialize a Member whose name starts with &#39;my&#39; If your member does not have that name, use Dt_SERIALIZE.
Definition: DtSerialize.h:158
CacheMap myRuntimeCache
std::set&lt;std::string&gt; myKeywords;
Definition: DtModelDefinition.h:281
std::vector< DtAltitudeBasedScaleConfigurationRecord > DtAltitudeBasedScaleConfigurationRecordCollection
Definition: DtAltitudeBasedScaleConfigurationRecord.h:45
void serialize(Archive &ar, unsigned int version)
Definition: DtModelDefinition.h:242
void deleteCachedData(const std::string &name)
Helper function for deleting cache.
Definition: DtModelDefinition.h:125
Contains DLL export macros.

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)