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>
18 #include <vlutil/vlFilename.h>
22 #include <vrvUtil/event_signal.h>
23 #include <matrix/3dBoundingVolume.h>
24 #include <mutex>
25 #include <tbb/spin_mutex.h>
26 
27 #include <map>
28 
29 class DtModelSet;
30 class DtModelSetEntry;
39 
40 namespace makVrf
41 {
42  class DtEntityMapperKey;
43 
47  {
48  public:
50  {
51  public:
53  {
54  myLock = new std::unique_lock<std::mutex>(DtSharedModelSet::theSafetyMutex);
55  myVrvLock = new makVrv::DtWriteSettingsLock<DtSharedModelSet>(manager);
56  }
57 
59  {
60  delete myVrvLock;
61  myVrvLock = nullptr;
62 
63  delete myLock;
64  myLock = nullptr;
65  }
66 
68 
69  protected:
70  std::unique_lock<std::mutex> * myLock = nullptr;
72  };
73 
74  public:
80 
84  static std::string className();
85 
87  virtual ~DtSharedModelSet() override;
88 
90  virtual void setModelSet(DtModelSet*);
91 
93  virtual void clearModelSet();
94 
96  virtual bool load(const DtFilename&, std::set<DtString>& iconLists, bool signal = false);
97 
100  virtual void setVariableBindings(const DtRwVariableBindings*);
102  {
103  return myVariableBindings;
104  }
105 
106  virtual void setSimulationModelSets(const std::vector<DtSimulationModelSet*>& sets);
107  virtual const std::vector<DtSimulationModelSet*>& simulationModelSets() const;
108 
110  virtual void setSearchPaths(const DtReaderWriter::SearchPaths&);
112  {
113  return mySearchPaths;
114  }
115 
118  virtual void addSimulationObjectGroupModelSetEntry(DtSimulationObjectGroupModelSetEntry* entry);
119 
121  virtual DtSimulationObjectGroupModelSetEntry findSimulationObjectGroup(const std::string& sogName) const;
122 
124  virtual void getSupportPoints(const DtEntityType& et,
125  DtVector& left, DtVector& right, DtVector& other);
126 
127  virtual std::string getNavDataPath(const DtEntityType& et);
128 
130  virtual Dt3dBoundingVolume getBoundingVolume(const DtEntityMapperKey& et);
131 
133  virtual double getMaximumSpeed(const DtEntityType& et);
134 
137  virtual double getMinimumSpeed(const DtEntityType& et);
138 
140  virtual double getDefaultOrderedSpeed(const DtEntityType& et);
141 
143  virtual double getMaximumAcceleration(const DtEntityType& et);
144 
146  virtual double getMaximumDeceleration(const DtEntityType& et);
147 
149  virtual bool loadFromDataFiles(const DtFilename& entities, const DtFilename& platforms, std::set<DtString>& iconLists, bool signal = true, DtModelSet* preloadModelSet = 0);
150 
152  virtual void mergeFavorites(const DtModelSet* f);
153 
155  virtual bool hasComponentDescriptor(const DtEntityMapperKey&, const DtString& type);
156 
158  virtual std::vector<DtComponentDescriptor*> componentDescriptorsFrom(const DtEntityMapperKey&, const DtString& type);
159 
161  virtual DtEntityType nameToType(const DtString&) const;
162 
164  virtual DtModelSetEntry* modelSetEntry(const DtEntityMapperKey& key) const;
165 
168  virtual std::string additionalKeywords(const DtEntityMapperKey&) const;
169  virtual void setAdditionalKeywords(const DtEntityMapperKey&, const std::string&, bool replace = false);
170 
172  virtual DtModelSetEntry* exactModelSetEntry(const DtEntityMapperKey& key) const;
173 
175  virtual bool canHoldSubordinates(const DtEntityMapperKey& key) const;
176 
178  virtual DtModelSetEntry* addModelSetEntry(const DtString& label, const DtEntityMapperKey&,
179  const DtRwNLengthStringVector& cats);
180 
182  virtual void removeModelSetEntry(const DtEntityMapperKey& e);
183 
185  virtual std::string nameFor(const DtEntityMapperKey&) const;
186 
188  virtual std::string keywordsFor(const DtEntityMapperKey&) const;
189 
191  virtual DtModelSet* modelSet() const;
192 
194  virtual void statePropertiesFor(const DtEntityType&, DtRwProperties&) const;
195 
197  virtual void parameterPropertiesFor(const DtEntityType&, DtRwProperties&);
198 
200  virtual void statePropertiesForPlatform(const DtString&, DtRwProperties&) const;
201 
203  virtual void parameterPropertiesForPlatform(const DtString&, DtRwProperties&) const;
204 
208  virtual void parameterPropertiesFor(
209  const std::set<DtSimObjectReference>& states, DtRwProperties&);
210 
212  virtual std::shared_ptr<DtReaderWriter> rwProperty(const DtEntityType&, const std::string& prop) const;
213 
216  bool addStateProperty(const DtEntityType& key, DtPropertyInterface* prop) const;
217 
219  virtual void loadPlatforms(const DtString&);
220 
222  virtual void clearPlatforms();
223 
225  virtual DtRwDIGuyCharacterInfo getDIGuyCharacterInformation(const DtEntityMapperKey&);
226 
228  virtual DtVrfObjectParameters* lookupParametersFor(DtModelSetEntry* entry);
229  virtual DtVrfObjectParameters* lookupParametersFor(const DtEntityType&);
230 
233  virtual DtEntityType nextAvailableSimulationObjectGroupObjectType() const;
234 
236  virtual bool enabledRadarCoverageDescriptors(const DtEntityMapperKey&, std::vector<DtObjectSensorDescriptor*>&);
237 
238  typedef std::pair<DtString, unsigned> EquipmentTypeCountPair;
240  {
242  ObjectTypeAndLabel(const DtEntityType& ot, const DtString& l,
243  const DtString& c = DtString::nullString())
244  : objectType(ot), label(l), category(c) {};
245 
246  DtEntityType objectType;
249  };
250  typedef std::multimap<EquipmentTypeCountPair, ObjectTypeAndLabel> EquipmentTypeMap;
251 
252  virtual EquipmentTypeMap baseEquipment(const DtEntityType&);
253 
254  virtual void signalLoaded();
255 
256  protected:
258 
259  typedef std::map<std::string, std::shared_ptr<DtReaderWriter> > PropertiesMap;
260 
262  {
263  DtFilename fullPath;
265  DtVrfObjectParameters* parameters = nullptr;
266  };
267 
268  typedef std::map<DtString, PlatformStruct> PlatformsMap;
269 
271  virtual PlatformsMap::const_iterator availablePlatform(const DtString& str) const;
272 
273  virtual void clearSimulationModelSets();
274 
275  protected:
277 
279 
280  mutable tbb::spin_mutex theAvailablePlatformMutex;
281  typedef std::map<DtModelSetEntry*, DtVrfObjectParameters*> ParameterData;
282 
286 
288 
290  {
291  public:
293  AdditionalKey(const AdditionalKey& orig) : DtEntityMapperKey(orig), myAdditionalKeywords(orig.myAdditionalKeywords) {};
294 
295  std::string myAdditionalKeywords;
296  };
297 
300  std::vector<DtSimulationModelSet*> mySimulationModelSets;
301 
303  static std::mutex theSafetyMutex;
304  };
305 
308  {
309  public:
310 
315 
319 
323  static DtSharedModelSetSignaler* findInstance(
325 
327  virtual ~DtSharedModelSetSignaler() override;
328 
332 
336 
337  protected:
339 
340  private:
343  };
344 }
Instances of DtVrfObjectParameters are the readable/writeable objects that contain the information ne...
Definition: vrfObjectParameters.h:64
std::pair< DtString, unsigned > EquipmentTypeCountPair
Definition: sharedModelSet.h:238
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:19
DtOrderedKeyList< AdditionalKey * > AdditionalKeywords
Definition: sharedModelSet.h:298
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:67
std::map< std::string, std::shared_ptr< DtReaderWriter > > PropertiesMap
Definition: sharedModelSet.h:259
DtModelSet * myModelSet
Definition: sharedModelSet.h:276
A signaler for the shared model set changes.
Definition: sharedModelSet.h:307
DtRwNLengthStringVector is a named, readable/writable vector of strings of arbitrary length...
Definition: rwNLengthStringVector.h:28
DtReaderWriter::SearchPaths mySearchPaths
Definition: sharedModelSet.h:287
AdditionalKey(const DtEntityMapperKey &kw)
Definition: sharedModelSet.h:292
DtFilename fullPath
Definition: sharedModelSet.h:263
DtVariableBindingsSharedPtr myVariableBindings
Definition: sharedModelSet.h:302
List of DtComponentSystemDescriptor instances.
Definition: componentSystemDescriptorList.h:20
std::map< DtString, PlatformStruct > PlatformsMap
Definition: sharedModelSet.h:268
std::multimap< EquipmentTypeCountPair, ObjectTypeAndLabel > EquipmentTypeMap
Definition: sharedModelSet.h:250
WriteSettingsLock(makVrv::DtSharedSettingsManager &manager)
Definition: sharedModelSet.h:52
std::shared_ptr< DtRwVariableBindings > DtVariableBindingsSharedPtr
Definition: rwVariableBindings.h:152
static std::mutex theSafetyMutex
Definition: sharedModelSet.h:303
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
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:157
virtual ~WriteSettingsLock()
Definition: sharedModelSet.h:58
Interface class used to define minimal interface for a property. The DtPropertyInterface class provid...
Definition: propertyInterface.h:53
AdditionalKeywords myAdditionalKeywords
Definition: sharedModelSet.h:299
tbb::spin_mutex theAvailablePlatformMutex
Definition: sharedModelSet.h:280
The event queue interface is a cross thread event queue used to emit event_signal across thread bound...
Definition: DtEventQueueInterface.h:27
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:285
Contains the DtSharedSettings class declaration.
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
DtString category
Definition: sharedModelSet.h:248
Shared information about the current model set and entities/platforms that are available to it...
Definition: sharedModelSet.h:46
Definition: sharedModelSet.h:49
std::vector< DtSimulationModelSet * > mySimulationModelSets
Definition: sharedModelSet.h:300
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:241
Definition: sharedModelSet.h:261
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:289
Definition: sharedModelSet.h:239
PropertiesMap properties
Definition: sharedModelSet.h:264
const DtVariableBindingsSharedPtr & variableBindings() const
Definition: sharedModelSet.h:101
const DtReaderWriter::SearchPaths & searchPaths() const
Definition: sharedModelSet.h:111
A list of properties. A DtPropertyInterface object that is a specialized version of DtRwVariableBindi...
Definition: rwProperties.h:122
ObjectTypeAndLabel(const DtEntityType &ot, const DtString &l, const DtString &c=DtString::nullString())
Definition: sharedModelSet.h:242
std::map< DtModelSetEntry *, DtVrfObjectParameters * > ParameterData
Definition: sharedModelSet.h:281
PlatformsMap myAvailablePlatforms
Definition: sharedModelSet.h:278
Definition: modelSet.h:35
DtString label
Definition: sharedModelSet.h:247
makVrv::event_signal< void()> signal_modelSetLoaded
Definition: sharedModelSet.h:330

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)