VR-Forces 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 #include <tbb/spin_mutex.h>
27 
28 #include <map>
29 
30 class DtModelSet;
31 class DtModelSetEntry;
40 
41 namespace makVrf
42 {
43  class DtEntityMapperKey;
44 
48  {
49  public:
51  {
52  public:
54  {
55  myLock = new tbb::mutex::scoped_lock(DtSharedModelSet::theSafetyMutex);
56  myVrvLock = new makVrv::DtWriteSettingsLock<DtSharedModelSet>(manager);
57  }
58 
60  {
61  delete myVrvLock;
62  myVrvLock = nullptr;
63 
64  delete myLock;
65  myLock = nullptr;
66  }
67 
69 
70  protected:
71  tbb::mutex::scoped_lock* myLock = nullptr;
73  };
74 
75  public:
81 
85  static std::string className();
86 
88  virtual ~DtSharedModelSet();
89 
91  virtual void setModelSet(DtModelSet*);
92 
94  virtual void clearModelSet();
95 
97  virtual bool load(const DtFilename&, std::set<DtString>& iconLists, bool signal = false);
98 
101  virtual void setVariableBindings(const DtRwVariableBindings*);
103  {
104  return myVariableBindings;
105  }
106 
107  virtual void setSimulationModelSets(const std::vector<DtSimulationModelSet*>& sets);
108  virtual const std::vector<DtSimulationModelSet*>& simulationModelSets() const;
109 
111  virtual void setSearchPaths(const DtReaderWriter::SearchPaths&);
113  {
114  return mySearchPaths;
115  }
116 
119  virtual void addSimulationObjectGroupModelSetEntry(DtSimulationObjectGroupModelSetEntry* entry);
120 
122  virtual DtSimulationObjectGroupModelSetEntry findSimulationObjectGroup(const std::string& sogName) const;
123 
125  virtual void getSupportPoints(const DtEntityType& et,
126  DtVector& left, DtVector& right, DtVector& other);
127 
128  virtual std::string getNavDataPath(const DtEntityType& et);
129 
131  virtual Dt3dBoundingVolume getBoundingVolume(const DtEntityMapperKey& et);
132 
134  virtual double getMaximumSpeed(const DtEntityType& et);
135 
138  virtual double getMinimumSpeed(const DtEntityType& et);
139 
141  virtual double getDefaultOrderedSpeed(const DtEntityType& et);
142 
144  virtual double getMaximumAcceleration(const DtEntityType& et);
145 
147  virtual double getMaximumDeceleration(const DtEntityType& et);
148 
150  virtual bool loadFromDataFiles(const DtFilename& entities, const DtFilename& platforms, std::set<DtString>& iconLists, bool signal = true, DtModelSet* preloadModelSet = 0);
151 
153  virtual void mergeFavorites(const DtModelSet* f);
154 
156  virtual bool hasComponentDescriptor(const DtEntityMapperKey&, const DtString& type);
157 
159  virtual std::vector<DtComponentDescriptor*> componentDescriptorsFrom(const DtEntityMapperKey&, const DtString& type);
160 
162  virtual DtEntityType nameToType(const DtString&) const;
163 
165  virtual DtModelSetEntry* modelSetEntry(const DtEntityMapperKey& key) const;
166 
169  virtual std::string additionalKeywords(const DtEntityMapperKey&) const;
170  virtual void setAdditionalKeywords(const DtEntityMapperKey&, const std::string&, bool replace = false);
171 
173  virtual DtModelSetEntry* exactModelSetEntry(const DtEntityMapperKey& key) const;
174 
176  virtual bool canHoldSubordinates(const DtEntityMapperKey& key) const;
177 
179  virtual DtModelSetEntry* addModelSetEntry(const DtString& label, const DtEntityMapperKey&,
180  const DtRwNLengthStringVector& cats);
181 
183  virtual void removeModelSetEntry(const DtEntityMapperKey& e);
184 
186  virtual std::string nameFor(const DtEntityMapperKey&) const;
187 
189  virtual std::string keywordsFor(const DtEntityMapperKey&) const;
190 
192  virtual DtModelSet* modelSet() const;
193 
195  virtual void statePropertiesFor(const DtEntityType&, DtRwProperties&) const;
196 
198  virtual void parameterPropertiesFor(const DtEntityType&, DtRwProperties&);
199 
201  virtual void statePropertiesForPlatform(const DtString&, DtRwProperties&) const;
202 
204  virtual void parameterPropertiesForPlatform(const DtString&, DtRwProperties&) const;
205 
209  virtual void parameterPropertiesFor(
211 
213  virtual boost::shared_ptr<DtReaderWriter> rwProperty(const DtEntityType&, const std::string& prop) const;
214 
217  bool addStateProperty(const DtEntityType& key, DtPropertyInterface* prop) const;
218 
220  virtual void loadPlatforms(const DtString&);
221 
223  virtual void clearPlatforms();
224 
226  virtual DtRwDIGuyCharacterInfo getDIGuyCharacterInformation(const DtEntityMapperKey&);
227 
229  virtual DtVrfObjectParameters* lookupParametersFor(DtModelSetEntry* entry);
230  virtual DtVrfObjectParameters* lookupParametersFor(const DtEntityType&);
231 
234  virtual DtObjectType nextAvailableSimulationObjectGroupObjectType() const;
235 
237  virtual bool enabledRadarCoverageDescriptors(const DtEntityMapperKey&, std::vector<DtObjectSensorDescriptor*>&);
238 
239  typedef std::pair<DtString, unsigned> EquipmentTypeCountPair;
241  {
244  const DtString& c = DtString::nullString())
245  : objectType(ot), label(l), category(c) {};
246 
247  DtObjectType objectType;
250  };
251  typedef std::multimap<EquipmentTypeCountPair, ObjectTypeAndLabel> EquipmentTypeMap;
252 
253  virtual EquipmentTypeMap baseEquipment(const DtObjectType&);
254 
255  virtual void signalLoaded();
256 
257  protected:
259 
260  typedef std::map<std::string, boost::shared_ptr<DtReaderWriter> > PropertiesMap;
261 
263  {
264  DtFilename fullPath;
266  DtVrfObjectParameters* parameters = nullptr;
267  };
268 
269  typedef std::map<DtString, PlatformStruct> PlatformsMap;
270 
272  virtual PlatformsMap::const_iterator availablePlatform(const DtString& str) const;
273 
274  virtual void clearSimulationModelSets();
275 
276  protected:
278 
280 
281  mutable tbb::spin_mutex theAvailablePlatformMutex;
282  typedef std::map<DtModelSetEntry*, DtVrfObjectParameters*> ParameterData;
283 
287 
289 
291  {
292  public:
294  AdditionalKey(const AdditionalKey& orig) : DtEntityMapperKey(orig), myAdditionalKeywords(orig.myAdditionalKeywords) {};
295 
296  std::string myAdditionalKeywords;
297  };
298 
301  std::vector<DtSimulationModelSet*> mySimulationModelSets;
302 
304  static tbb::mutex theSafetyMutex;
305  };
306 
309  {
310  public:
311 
316 
320 
324  static DtSharedModelSetSignaler* findInstance(
326 
328  virtual ~DtSharedModelSetSignaler();
329 
333 
337 
338  protected:
340 
341  private:
344  };
345 }
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:239
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:299
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:68
DtModelSet * myModelSet
Definition: sharedModelSet.h:277
A signaler for the shared model set changes.
Definition: sharedModelSet.h:308
DtRwNLengthStringVector is a named, readable/writable vector of strings of arbitrary length...
Definition: rwNLengthStringVector.h:28
DtReaderWriter::SearchPaths mySearchPaths
Definition: sharedModelSet.h:288
AdditionalKey(const DtEntityMapperKey &kw)
Definition: sharedModelSet.h:293
DtFilename fullPath
Definition: sharedModelSet.h:264
DtVariableBindingsSharedPtr myVariableBindings
Definition: sharedModelSet.h:303
ObjectTypeAndLabel(const DtObjectType &ot, const DtString &l, const DtString &c=DtString::nullString())
Definition: sharedModelSet.h:243
List of DtComponentSystemDescriptor instances.
Definition: componentSystemDescriptorList.h:20
std::map< DtString, PlatformStruct > PlatformsMap
Definition: sharedModelSet.h:269
std::multimap< EquipmentTypeCountPair, ObjectTypeAndLabel > EquipmentTypeMap
Definition: sharedModelSet.h:251
Contains makVrv::DtStateView class.
WriteSettingsLock(makVrv::DtSharedSettingsManager &manager)
Definition: sharedModelSet.h:53
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:260
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:59
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:300
tbb::spin_mutex theAvailablePlatformMutex
Definition: sharedModelSet.h:281
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
ParameterData myParameterData
Parameter data is mutable so that we can cache retrieved data in paramegerDataFor().
Definition: sharedModelSet.h:286
Contains the DtSharedSettings class declaration.
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
DtString category
Definition: sharedModelSet.h:249
Shared information about the current model set and entities/platforms that are available to it...
Definition: sharedModelSet.h:47
Definition: sharedModelSet.h:50
Contains makVrv::DtVrlinkSimulatedEntityState class.
std::vector< DtSimulationModelSet * > mySimulationModelSets
Definition: sharedModelSet.h:301
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:242
Definition: sharedModelSet.h:262
A simulation model set contains all the information that can be used to support a scenario either for...
Definition: simulationModelSet.h:31
The DtRwDIGuyCharactertInfo class is a readable/writable class that can store itself and read itself ...
Definition: rwDIGuyCharacterInfo.h:32
Definition: sharedModelSet.h:290
Definition: sharedModelSet.h:240
PropertiesMap properties
Definition: sharedModelSet.h:265
static tbb::mutex theSafetyMutex
Definition: sharedModelSet.h:304
const DtVariableBindingsSharedPtr & variableBindings() const
Definition: sharedModelSet.h:102
const DtReaderWriter::SearchPaths & searchPaths() const
Definition: sharedModelSet.h:112
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:282
PlatformsMap myAvailablePlatforms
Definition: sharedModelSet.h:279
Definition: modelSet.h:35
DtString label
Definition: sharedModelSet.h:248
makVrv::event_signal< void()> signal_modelSetLoaded
Definition: sharedModelSet.h:331

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)