VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
sharedModelSet.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
17 #include <vlutil/vlFilename.h>
21 #include <vrvUtil/event_signal.h>
22 #include <vrvCore/DtStateView.h>
23 #include <vrvCore/DtEntityState.h>
24 #include <matrix/3dBoundingVolume.h>
25 #include <tbb/recursive_mutex.h>
26 
27 #include <map>
28 
29 class DtModelSet;
30 class DtModelSetEntry;
38 
39 namespace makVrf
40 {
41  class DtEntityMapperKey;
42 
46  {
47  public:
49  {
50  public:
52  {
53  myLock = new tbb::mutex::scoped_lock(DtSharedModelSet::theSafetyMutex);
54  myVrvLock = new makVrv::DtWriteSettingsLock<DtSharedModelSet>(manager);
55  }
56 
58  {
59  delete myVrvLock;
60  myVrvLock = nullptr;
61 
62  delete myLock;
63  myLock = nullptr;
64  }
65 
67 
68  protected:
69  tbb::mutex::scoped_lock* myLock = nullptr;
71  };
72 
73  public:
79 
83  static std::string className();
84 
86  virtual ~DtSharedModelSet();
87 
89  virtual void setModelSet(DtModelSet*);
90 
92  virtual void clearModelSet();
93 
95  virtual bool load(const DtFilename&, std::set<DtString>& iconLists, bool signal = false);
96 
99  virtual void setVariableBindings(const DtRwVariableBindings*);
101  {
102  return myVariableBindings;
103  }
104 
106  virtual void setSearchPaths(const DtReaderWriter::SearchPaths&);
108  {
109  return mySearchPaths;
110  }
111 
114  virtual void addSimulationObjectGroupModelSetEntry(DtSimulationObjectGroupModelSetEntry* entry);
115 
117  virtual DtSimulationObjectGroupModelSetEntry findSimulationObjectGroup(const std::string& sogName) const;
118 
120  virtual void getSupportPoints(const DtEntityType& et,
121  DtVector& left, DtVector& right, DtVector& other);
122 
123  virtual std::string getNavDataPath(const DtEntityType& et);
124 
126  virtual Dt3dBoundingVolume getBoundingVolume(const DtEntityMapperKey& et);
127 
129  virtual double getMaximumSpeed(const DtEntityType& et);
130 
133  virtual double getMinimumSpeed(const DtEntityType& et);
134 
136  virtual double getDefaultOrderedSpeed(const DtEntityType& et);
137 
139  virtual double getMaximumAcceleration(const DtEntityType& et);
140 
142  virtual double getMaximumDeceleration(const DtEntityType& et);
143 
145  virtual bool loadFromDataFiles(const DtFilename& entities, const DtFilename& platforms, std::set<DtString>& iconLists, bool signal = true, DtModelSet* preloadModelSet = 0);
146 
148  virtual void mergeFavorites(const DtModelSet* f);
149 
151  virtual bool hasComponentDescriptor(const DtEntityMapperKey&, const DtString& type);
152 
154  virtual std::vector<DtComponentDescriptor*> componentDescriptorsFrom(const DtEntityMapperKey&, const DtString& type);
155 
157  virtual DtEntityType nameToType(const DtString&) const;
158 
160  virtual DtModelSetEntry* modelSetEntry(const DtEntityMapperKey& key) const;
161 
164  virtual std::string additionalKeywords(const DtEntityMapperKey&) const;
165  virtual void setAdditionalKeywords(const DtEntityMapperKey&, const std::string&, bool replace = false);
166 
168  virtual DtModelSetEntry* exactModelSetEntry(const DtEntityMapperKey& key) const;
169 
171  virtual bool canHoldSubordinates(const DtEntityMapperKey& key) const;
172 
174  virtual DtModelSetEntry* addModelSetEntry(const DtString& label, const DtEntityMapperKey&,
175  const DtRwNLengthStringVector& cats);
176 
178  virtual void removeModelSetEntry(const DtEntityMapperKey& e);
179 
181  virtual std::string nameFor(const DtEntityMapperKey&) const;
182 
184  virtual std::string keywordsFor(const DtEntityMapperKey&) const;
185 
187  virtual DtModelSet* modelSet() const;
188 
190  virtual void statePropertiesFor(const DtEntityType&, DtRwProperties&) const;
191 
193  virtual void parameterPropertiesFor(const DtEntityType&, DtRwProperties&);
194 
196  virtual void statePropertiesForPlatform(const DtString&, DtRwProperties&) const;
197 
199  virtual void parameterPropertiesForPlatform(const DtString&, DtRwProperties&) const;
200 
204  virtual void parameterPropertiesFor(
206 
208  virtual boost::shared_ptr<DtReaderWriter> rwProperty(const DtEntityType&, const std::string& prop) const;
209 
212  bool addStateProperty(const DtEntityType& key, DtPropertyInterface* prop) const;
213 
215  virtual void loadPlatforms(const DtString&);
216 
218  virtual void clearPlatforms();
219 
221  virtual DtRwDIGuyCharacterInfo getDIGuyCharacterInformation(const DtEntityMapperKey&);
222 
224  virtual DtVrfObjectParameters* lookupParametersFor(DtModelSetEntry* entry);
225  virtual DtVrfObjectParameters* lookupParametersFor(const DtEntityType&);
226 
229  virtual DtObjectType nextAvailableSimulationObjectGroupObjectType() const;
230 
232  virtual bool enabledRadarCoverageDescriptors(const DtEntityMapperKey&, std::vector<DtObjectSensorDescriptor*>&);
233 
234  typedef std::pair<DtString, unsigned> EquipmentTypeCountPair;
236  {
239  const DtString& c = DtString::nullString())
240  : objectType(ot), label(l), category(c) {};
241 
242  DtObjectType objectType;
245  };
246  typedef std::multimap<EquipmentTypeCountPair, ObjectTypeAndLabel> EquipmentTypeMap;
247 
248  virtual EquipmentTypeMap baseEquipment(const DtObjectType&);
249 
250  virtual void signalLoaded();
251 
252  protected:
254 
255  protected:
257  typedef std::map<std::string, boost::shared_ptr<DtReaderWriter> > PropertiesMap;
258 
260  {
263  };
264 
265  typedef std::map<DtString, PlatformStruct> PlatformsMap;
267 
268  typedef std::map<DtModelSetEntry*, DtVrfObjectParameters*> ParameterData;
272 
274 
275  protected:
277  {
278  public:
280  AdditionalKey(const AdditionalKey& orig) : DtEntityMapperKey(orig), myAdditionalKeywords(orig.myAdditionalKeywords) {};
281 
282  std::string myAdditionalKeywords;
283  };
284 
287 
289  static tbb::mutex theSafetyMutex;
290  };
291 
294  {
295  public:
296 
301 
305 
309  static DtSharedModelSetSignaler* findInstance(
311 
313  virtual ~DtSharedModelSetSignaler();
314 
318 
319  protected:
321 
322  private:
325  };
326 }
Instances of DtVrfObjectParameters are the readable/writeable objects that contain the information ne...
Definition: vrfObjectParameters.h:63
std::pair< DtString, unsigned > EquipmentTypeCountPair
Definition: sharedModelSet.h:234
a read settings lock on a setting object. The object can only get read access aka const functions...
Definition: DtReadSettingsLock.h:48
Definition: entityMapperKey.h:23
DtOrderedKeyList< AdditionalKey * > AdditionalKeywords
Definition: sharedModelSet.h:285
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Interaction makVrv::DtWriteSettingsLock class.
makVrv::DtWriteSettingsLock< DtSharedModelSet > & operator->()
Definition: sharedModelSet.h:66
DtModelSet * myModelSet
Definition: sharedModelSet.h:256
A signaler for the shared model set changes.
Definition: sharedModelSet.h:293
DtRwNLengthStringVector is a named, readable/writable vector of strings of arbitrary length...
Definition: rwNLengthStringVector.h:28
DtReaderWriter::SearchPaths mySearchPaths
Definition: sharedModelSet.h:273
AdditionalKey(const DtEntityMapperKey &kw)
Definition: sharedModelSet.h:279
DtVariableBindingsSharedPtr myVariableBindings
Definition: sharedModelSet.h:288
ObjectTypeAndLabel(const DtObjectType &ot, const DtString &l, const DtString &c=DtString::nullString())
Definition: sharedModelSet.h:238
List of DtComponentSystemDescriptor instances.
Definition: componentSystemDescriptorList.h:20
std::map< DtString, PlatformStruct > PlatformsMap
Definition: sharedModelSet.h:265
std::multimap< EquipmentTypeCountPair, ObjectTypeAndLabel > EquipmentTypeMap
Definition: sharedModelSet.h:246
Contains makVrv::DtStateView class.
WriteSettingsLock(makVrv::DtSharedSettingsManager &manager)
Definition: sharedModelSet.h:51
Instances of DtComponentDescriptorList are readable/writeable lists of DtComponentDescriptor objects...
Definition: componentDescriptorList.h:22
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
DtObjectSensorDescriptor; descriptor for the DtObjectSensor component.
Definition: objectSensorDescriptor.h:27
The shared settings manager, is the global object responsible for managing any shared settings object...
Definition: DtSharedSettingsManager.h:42
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
std::map< std::string, boost::shared_ptr< DtReaderWriter > > PropertiesMap
Definition: sharedModelSet.h:257
DtBoost::shared_ptr< DtRwVariableBindings > DtVariableBindingsSharedPtr
Definition: rwVariableBindings.h:149
Contains makVrv::event_signal class.
The base class for all shared settings. Actual settings class should have the following members/decla...
Definition: DtSharedSettings.h:45
Description: A model is a set of items that defines a model to create in the back-end from the front-...
Definition: simulationObjectGroupModelSetEntry.h:161
virtual ~WriteSettingsLock()
Definition: sharedModelSet.h:57
Interface class used to define minimal interface for a property. The DtPropertyInterface class provid...
Definition: propertyInterface.h:48
Definition: objectType.h:27
AdditionalKeywords myAdditionalKeywords
Definition: sharedModelSet.h:286
The event queue interface is a cross thread event queue used to emit event_signal across thread bound...
Definition: DtEventQueueInterface.h:26
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
Contains the DtRwDIGuyCharacterInfo class declaration.
Definition: modelSetEntry.h:34
makVrv::event_signal< void()> signal_modelSetLoaded
Definition: sharedModelSet.h:316
DtVrfObjectParameters * parameters
Definition: sharedModelSet.h:262
ParameterData myParameterData
Parameter data is mutable so that we can cache retrieved data in paramegerDataFor().
Definition: sharedModelSet.h:271
Contains the DtSharedSettings class declaration.
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
DtString category
Definition: sharedModelSet.h:244
Shared information about the current model set and entities/platforms that are available to it...
Definition: sharedModelSet.h:45
Definition: sharedModelSet.h:48
Contains makVrv::DtVrlinkSimulatedEntityState class.
a write settings lock on a setting object. The object can be read and modified, but no other threads ...
Definition: DtWriteSettingsLock.h:47
ObjectTypeAndLabel()
Definition: sharedModelSet.h:237
Definition: sharedModelSet.h:259
The DtRwDIGuyCharactertInfo class is a readable/writable class that can store itself and read itself ...
Definition: rwDIGuyCharacterInfo.h:32
Definition: sharedModelSet.h:276
Definition: sharedModelSet.h:235
PropertiesMap properties
Definition: sharedModelSet.h:261
static tbb::mutex theSafetyMutex
Definition: sharedModelSet.h:289
const DtVariableBindingsSharedPtr & variableBindings() const
Definition: sharedModelSet.h:100
const DtReaderWriter::SearchPaths & searchPaths() const
Definition: sharedModelSet.h:107
A list of properties. A DtPropertyInterface object that is a specialized version of DtRwVariableBindi...
Definition: rwProperties.h:126
std::map< DtModelSetEntry *, DtVrfObjectParameters * > ParameterData
Definition: sharedModelSet.h:268
PlatformsMap myAvailablePlatforms
Definition: sharedModelSet.h:266
Definition: modelSet.h:34
DtString label
Definition: sharedModelSet.h:243

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)