VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfVisualsManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <vrfGuiCore/vrfGuiCore.h>
12 #include <vrvUtil/signalslib.h>
15 #include <vlpi/entityType.h>
16 
20 #include <vlutil/vlFilename.h>
21 #include <tbb/recursive_mutex.h>
22 
23 namespace makVrv
24 {
25  class DtDe;
26  class DtModelDefinitionManager;
27  class DtModelDefinition;
28  class DtVisualizerDefinitionSet;
29  class DtVisualizerDefinition;
30 }
31 
34 
35 static tbb::recursive_mutex theVisualMutexLock;
36 
37 namespace makVrf
38 {
41  {
42  public:
44  : makVrv::DtEntityTypeMapper(name)
45  , myMapperType(t)
46  {
47  }
48 
49  virtual ~DtVrfEntityTypeMapper();
50 
51  void setFilename(const DtFilename& f)
52  {
53  myFilename = f;
54  }
55 
56  const DtFilename& filename() const
57  {
58  return myFilename;
59  }
60 
61  const NameList* findMappings( const DtEntityType& type, bool exact = false ) const;
62 
64  virtual void setFromRecord(const makArchives::DtEntityTypeMappingRecord& record);
65 
67  virtual void addMapping(const DtEntityType& type,
68  const makVrv::DtUnicode& definitionName);
69 
71  virtual void removeMapping(const DtEntityType& type,
72  const makVrv::DtUnicode& value);
73 
74  virtual void mergeFromRecord(const makArchives::DtEntityTypeMappingRecord& record);
75 
76  bool isMappedDefinition(const makVrv::DtUnicode& def) const
77  {
78  return (myDefinitionsMap.find(def) != myDefinitionsMap.end());
79  }
80 
81  int mappedDefinitionCount(const makVrv::DtUnicode& def) const
82  {
83  DefinitionsMap::const_iterator iter = myDefinitionsMap.find(def);
84 
85  if (iter != myDefinitionsMap.end())
86  {
87  return iter->second;
88  }
89 
90  return 0;
91  }
92 
93  typedef std::map<makVrv::DtUnicode,int> DefinitionsMap;
94  const DefinitionsMap& definitionsMapped() const { return myDefinitionsMap; };
95 
97  virtual void mergeTypeMappingsFromPath(makVrv::DtDe&, const std::string& path);
98 
99  protected:
100  virtual void setupDefinitionsMap();
101 
102  protected:
103  DtFilename myFilename;
106  };
107 
111  {
112  public:
113  class Visuals;
114 
117 
119  virtual ~DtVrfVisualsManager();
120 
122  static DtVrfVisualsManager& instance(makVrv::DtDe&);
123  static void registerInstance(makVrv::DtDe&, DtVrfVisualsManager*);
124 
128  virtual bool loadVisuals(DtSimulationModelSet*, bool createIfMissing = false, bool editMode = false);
129 
131  virtual bool loadVisuals(const DtFilename&, const DtString& rootName = "");
132 
138  virtual bool createVisuals(const DtSimulationModelSet*, bool andLoad = true,
139  Visuals* visualsToUpgradeFrom = 0, const DtFilename& sourceDefinitionsDir = DtFilename::nullFilename());
140 
143  virtual bool getSystemVisualizerDefinitionAndElementTypeMap(const DtEntityType&, makVrv::DtUnicode&,
145 
147  virtual bool isUnknown(const std::vector<makVrv::DtUnicode>& entities) const;
148  virtual bool isUnknown(const makVrv::DtUnicode& entities) const;
149 
151  virtual makVrv::DtUnicode unknownString() const;
152 
154  virtual void updateUnknowns();
155 
156  const std::set<makVrv::DtUnicode> unknownStrings() const
157  {
158  return myUnknowns;
159  }
160 
161 
163  virtual void clear();
164 
166  virtual void clearSimulationModelSetVisuals();
167 
169  virtual void setupAdditionalVisualizers();
170 
172  virtual void upgradeSpotReportsDictionary(const DtFilename& toDirectory, Visuals&, bool force = false, bool mergeAttributes = false);
173 
177  virtual bool upgradeVisuals(const DtSimulationModelSet& oldSet, const DtSimulationModelSet& newSet);
178 
181  virtual bool loadVisuals(const DtScenarioExplorer& explorer, bool createIfMissing = false, bool force = false, bool editMode = false);
182 
184  virtual const Visuals* visualsFor(const DtSimulationModelSet&) const;
185  virtual Visuals* visualsFor(const DtSimulationModelSet&);
186  virtual Visuals* visualsFor(const std::string&);
187  virtual const Visuals* visualsFor(const std::string&) const;
188 
190  virtual makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes elementTypeFor(const DtEntityType&);
191 
193  virtual void mergeVisualsIntoSystemVisuals(const Visuals*);
194 
196  virtual void pruneFromSystemVisuals(const Visuals*);
197 
199  virtual void merge(const DtEntityType&, const Visuals*, bool toSystem = true, const DtString& newElementDefName = "", const DtEntityType& newType = DtEntityType());
200 
202  virtual void mergeElementDefinitionToSystem(const DtEntityType&);
203 
206  virtual bool saveSystemVisualsAsAppData(const DtFilename& directory, bool saveHierarchyData = true);
207 
210  virtual void createSpotReportDefinitionFor(const DtEntityType&);
211 
214  virtual bool updateAndAddMatchTypeVisuals(const DtEntityType& sourceType, const DtEntityType& matchType, bool andSystem = true);
215 
217  virtual void updateVisualsFor(const DtEntityType&);
218 
222  virtual void removeVisualsFor(const DtEntityType&, bool andSystem = true);
223 
225  virtual bool removeMappingsFor(const DtEntityType&, bool andSystem = true);
226 
228  virtual void removeElementDefinition(const DtEntityType&, bool andSystem = true);
229 
231  virtual Visuals* visualsFor(const DtEntityType&);
232 
234  virtual void setDefaultVisuals(const std::string&);
235  const std::string& defaultVisuals() const;
236 
238  virtual void setCoreRootName(const std::string&);
239  virtual const std::string& coreRootName() const;
240 
241  virtual void resetStartupCounts(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
242 
243  Visuals* systemDefaulVisuals() const { return mySystemDefaultVisuals; };
244 
245  typedef boost::unordered_map<makVrv::DtSharedSimulationSettings::MapperType, DtVrfEntityTypeMapper*> MappersMap;
246 
248  {
249  public:
250  Visuals();
251  Visuals(makVrv::DtDe& de, bool useNewStructure, bool inAppData);
252  Visuals(const Visuals&);
253  virtual ~Visuals();
254 
255  Visuals& operator=(const Visuals&);
256  void addKeyForDefinition(const DtEntityType&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes,
257  const makVrv::DtUnicode&);
258 
261  const makVrv::DtUnicode&) const;
262  void mergeModelDefinitions(const makVrv::DtModelDefinitionManager*);
263  void pruneModelDefinitions(const makVrv::DtModelDefinitionManager*);
264 
266  void initializeDefaults(const DtFilename& appDataDir = DtFilename::nullFilename());
267 
269  void initializeFrom(const DtFilename&, bool useNewStructure);
270 
272  void cleanup();
273 
275  void addMapper( makVrv::DtSharedSimulationSettings::MapperType mapperType, const std::string& mapperName,
276  const std::string& extension );
277 
279  void initializeMapper( makVrv::DtSharedSimulationSettings::MapperType mapperType, bool fromNewStructure = true, const DtString& definitionsDirectory = DtFilename::nullFilename() );
280 
283  bool getSystemVisualizerDefinitionAndElementTypeMap(const DtEntityType&, makVrv::DtUnicode&,
285 
286  void modelDefinitionsFromVisualizerSet(makVrv::DtModelDefinitionManager*, const makVrv::DtVisualizerDefinitionSet&) const;
287 
290 
292  bool save(const DtFilename& directory);
293 
297  bool save(const DtFilename&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes, bool andSaveHierarchy = false,
298  bool intoManagerSubDirectory = false, const DtFilename& definitionSubDirectory = "", bool mappedOnly = true);
299 
301  makVrv::DtUnicode findValidElementDefinition(const makVrv::DtEntityTypeMapper::NameList*,
303 
305  void install();
306 
307  void setDirectory(const DtFilename&);
308  void setRootName(const DtString&);
309 
311  bool load(const DtFilename&, const DtString& rootName);
312 
314  bool load(const DtFilename&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes, bool andLoadHierarchy = false,
315  bool useManagerSubStructure = false);
316 
318  bool installDefinitionRecordsFrom(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
319 
321  void loadOrCreateSpotReports(const DtFilename&, const DtString& root, bool install = true);
322 
323  void pushMappers();
324  void popMappers();
325 
326  bool loadMapFiles();
327 
329  void removeMappings(makVrv::DtEntityTypeMapper&, const makArchives::DtEntityTypeMappingRecord&) const;
330 
332  bool upgradeSpotReportsFromDictionary(const DtFilename&, bool force = false, bool mergeAttributes = false);
333  bool upgradeSpotReportsFromDictionary(const DtFilename&, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes,
334  const makVrv::DtUnicode& unknownName, bool force = false, bool mergeAttributes = false, const std::string& possibleMergeName = "");
335 
337  bool addElementDefinitionToSameDictionary(const DtEntityType& sourceType, const makVrv::DtUnicode& elementDefinition, const DtString& newDefinitionName,
338  bool toSystem = false);
339 
342  bool createVisualCopyOf(const DtEntityType& sourceType, const DtEntityType& destinationType, const DtString& newDefinitionName,
343  bool toSystem = false);
344 
345  void initializeSpotReportsHierarchy();
346 
350  void mergeAttributesFrom(const makVrv::DtElementDefinitionNew* source, makVrv::DtElementDefinitionNew* spotReport,
351  const std::vector<int>& supportedSets, bool mergeSymbolDecoration = false, const std::set<std::string>& ignore = std::set<std::string>());
352  bool mergeItemsFrom(const makVrv::DtElementDefinitionNew* source, makVrv::DtElementDefinitionNew* spotReport,
353  const std::vector<int>& supportedSets);
354  void copyAttributesFrom(const makVrv::DtElementDefinitionNew* source, makVrv::DtElementDefinitionNew* spotReport,
355  const std::vector<int>& supportedSets);
356 
358  bool spotReportHierarchyNeedsUpgrade(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes) const;
359 
360  bool isUnusedVisualizer(const makVrv::DtVisualizerDefinition* visDef) const;
361 
363  bool isMappedDefinition(const makVrv::DtUnicode&);
364 
367 
370  makArchives::DtElementsRecord* recHierRet = 0);
371 
373  bool needsLoading() const;
375 
378  bool updateAndAddMatchTypeVisuals(const DtEntityType& sourceType, const DtEntityType& matchType, bool andSystem = true);
379 
381  DtFilename modelDefinitionsPath(const DtFilename& root) const;
382 
384  DtFilename mapperDirectory(const DtFilename& root, makVrv::DtSharedSimulationSettings::MapperType type) const;
385 
387  DtFilename elementDefinitionDirectory(const DtFilename& root, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes type) const;
388 
390  std::set<std::string> hierarchyElementsForVisuals();
391 
392  std::set<std::string> systemHierarchyElementsForVisuals(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
393 
396  bool haveMappings = false);
397 
399  void merge(const Visuals*);
400 
402  void merge(const DtEntityType&, const Visuals*, bool toSystem = true, const DtString& newElementDefName = "", const DtEntityType& newType = DtEntityType());
403 
405  void mergeElementDefinitionToSystem(const DtEntityType&);
406 
409  virtual bool saveAsAppData(const DtFilename& definitionsDirectory, bool saveHierarchyData = true);
410 
412  bool installDefinitionRecordsFrom(makVrv::DtElementDefinitionManager* thisMgr,
414 
417  makArchives::DtElementsRecord& spoReportHierarchy);
418 
421  const Visuals* source);
422 
425 
428 
430  void saveMappersTo(const DtFilename&, bool useNewDirectoryStructure = false);
431 
433  void prune(const Visuals*);
434 
436  void saveVisualElementsFor(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes type);
437 
439  void saveModelDefinitions();
440 
442  void changeMappingType(const DtEntityType& from, const DtEntityType& to, bool toSystem = true);
443 
446  void removeSymbolDecorationAttribute(makVrv::DtElementDefinitionNew*, const std::vector<int>& supportedSets);
447  void addSymbolDecorationAttribute(makVrv::DtElementDefinitionNew*, const std::vector<int>& supportedSets);
448 
450  void saveMapper(const DtFilename&, makVrv::DtSharedSimulationSettings::MapperType);
451 
454 
456  void install(const DtEntityType&, bool mapOnly = false);
457 
459  void createSpotReportDefinitionFor(const DtEntityType&);
460 
462  void upgradeElementsForDefinition(const makVrv::DtUnicode& defs, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
463 
467  void removeVisualsFor(const DtEntityType&, bool fromSystem = true);
468 
470  bool removeMappingsFor(const DtEntityType&, bool andSystem = true);
471 
473  void updateElementDefinitions(makArchives::DtElementsRecord& destination, const makArchives::DtElementsRecord& source, const std::string& prepend);
474 
476  void removeElementDefinition(const DtEntityType&, bool fromSystem = true);
477  void removeElementsForDefinition(const makVrv::DtUnicode& defs, makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes,
478  bool fromSystem = true);
479 
481  bool hasType(const DtEntityType&) const;
482 
484  makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes elementTypeFor(const DtEntityType&);
485 
487  const makVrv::DtEntityTypeMapper::NameList* definitionsMapped(const DtEntityType&, makVrv::DtSharedSimulationSettings::MapperType&);
488  makVrv::DtSharedSimulationSettings::MapperType mapperTypeFor(const DtEntityType&) const;
489 
490  DtFilename rootDirectoryForMapper(makVrv::DtSharedSimulationSettings::MapperType mapper) const;
491  DtFilename rootDirectoryForManager(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes mapper) const;
492  virtual bool containsUnknown(const makVrv::DtEntityTypeMapper::NameList* names) const;
493 
494  typedef std::map<makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes, int> LastWriteTimes;
496 
497  void setLoadAllModelDefinitions(bool b) { myLoadAllModelDefinitions = b; };
498  bool loadAllModelDefinitions() const { return myLoadAllModelDefinitions; };
499 
500  DtVrfElementDefinitionTypeManager* elementDefinitionManager;
503  std::vector<MappersMap> pushedMappers;
505  DtFilename myDirectory;
510  };
511 
512 
514  virtual void initializeSystemVisuals(const DtFilename& definitionsDir = DtFilename::nullFilename(), bool andInstall = true,
515  bool setupSpotReports = true);
516 
517  boost::signal<void ()> signal_visualsLoaded;
518  boost::signal<void (const DtFilename&)> signal_visualsLoadedFrom;
519  boost::signal<void (DtSimulationModelSet*)> signal_spotReportVisualsLoadedFromSMS;
520  boost::signal<void (DtSimulationModelSet*)> signal_visualsLoadedFromSMS;
521 
522  protected:
523 
525  virtual void setupAdditionalTacticalGraphicsVisualizers();
526 
528  virtual void setupCloudLayers();
529  virtual void setupCloudDisplayLayer(const std::string&, const DtEntityType&, int r, int g, int b, int a);
530 
532  virtual void setupNavigationAreaVisualizer();
533 
535  virtual void setupBoundingVolumes();
536 
538  virtual void setupObjectConsoleWarngForTacticalGraphics();
539 
541  virtual void setupBoundingVolumes(const std::string& root);
542 
544  virtual void setupAdditionalSpotReportVisualizers();
545 
548  virtual void setupAdditionalSpotReportVisualizers(const makVrv::DtUnicode&);
549 
551  virtual void setupRangeRings();
552  virtual void addRangeRingsFor(int managerType);
553 
555  virtual void setupSensorContactLines();
556  virtual void addSensorContactLinesFor(int managerType);
557 
558  virtual void setupAdditionalAggregateVisualizers();
559 
560  protected:
562 
564 
566  {
568  ModelSetVisual(const DtFilename& f, const Visuals& v) : filename(f), visuals(v) {};
569  ModelSetVisual(const ModelSetVisual& orig) : filename(orig.filename), visuals(orig.visuals) {};
570  ModelSetVisual& operator=(const ModelSetVisual& orig) { filename = orig.filename; visuals = orig.visuals; return *this; };
571 
572  DtFilename filename;
574  };
575 
576  typedef std::vector<ModelSetVisual> SimulationModelSetVisuals;
579 
580  std::string myDefaultVisuals;
581  std::string myCoreRootName;
582 
583  std::set<DtFilename> mySystemVisuals;
584 
585  std::set<makVrv::DtUnicode> myUnknowns;
586  };
587 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)