VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simulationModelSetLoader.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2015 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
9 #pragma once
10 
19 
20 #include <vrvUtil/signalslib.h>
22 #include <vrfutil/rwForces.h>
28 #include <vrfutil/formationTable.h>
29 #include <vlutil/vlFilename.h>
30 #include <mtl/envValue.h>
31 #include <matrix/3dBoundingVolume.h>
33 #include <vrvUtil/DtUnicode.h>
34 #include <QtCore/QHash>
35 #include <QtGui/QPixmap>
36 #include <QtCore/QObject>
40 
42 
43 class DtEnvList;
51 class QTranslator;
53 class DtRwVisualMetaData;
54 class DtAmmunitionParams;
55 class DtDetonationParams;
61 
62 namespace makVrf
63 {
64  class DtEntityMapperKey;
65  class DtVrfVisualsManager;
66  class DtVrfEntityTypeMapper;
67 }
68 
69 namespace makVrv
70 {
71  class DtForceManager;
72  class DtModelDefinitionManager;
73  class DtEntityTypeMapper;
74 }
75 
76 class DtObjectType;
77 class DtModelSet;
78 class QComboBox;
80 class DtEnvironment;
81 class DtVariableBindingList;
82 
83 static const int DtTemplateKindBase = 400;
84 
86 {
87 public:
88  enum LoadFlags
89  {
90  LoadDataFiles = 0x00000001,
91  LoadParameterFiles = 0x00000002,
92  LoadSystemFiles = 0x00000004,
93  LoadSupportingFiles = 0x00000008,
94  LoadStandardSensorObjects = 0x00000010,
95  LoadTranslationFiles = 0x00000020,
96  LoadVisualFiles = 0x00000040,
97  LoadOrCreateVisualFiles = 0x00000080,
98  LoadAutoTagInformation = 0x00000100,
99  LoadAll = LoadDataFiles | LoadParameterFiles | LoadSystemFiles | LoadSupportingFiles | LoadStandardSensorObjects | LoadTranslationFiles | LoadOrCreateVisualFiles | LoadAutoTagInformation
100  };
101 
103  {
104  SystemCategories = 0,
105  EntityCategories = 1
106  };
107 
109  {
110  ParameterStruct() : params(0), isMasterSMS(false) {};
111  ParameterStruct(DtVrfObjectParameters* p, bool b, const DtFilename& f) : params(p), isMasterSMS(b), file(f) {};
112  ParameterStruct(const ParameterStruct& orig) : params(orig.params), isMasterSMS(orig.isMasterSMS), file(orig.file) {};
113 
114  DtVrfObjectParameters* params;
116  DtFilename file;
117  };
118 
119  typedef std::map<DtString, ParameterStruct> ParametersMap;
120 
122  {
123  public:
126 
127  virtual ~EnvironmentContainer();
128 
129  void seedFrom(DtEnvironmentSP env, DtEnvValueSP root);
130 
131  DtEnvironmentSP copyEnvironment(DtEnvironmentSP) const;
132  void reparentEnvironmentChildren(DtEnvList*, DtEnvValueSP root) const;
133 
134  DtEnvValueSP backup();
135  DtEnvValueSP update();
136 
137  void remove(DtEnvValueSP originalNode, DtEnvValueSP modifiedNode);
138  bool isEmpty() const;
139 
140  DtEnvValueSP replace(DtEnvironmentSP env, DtEnvValueSP node, DtEnvValueSP replaceWith);
141  void reparentRoots(DtEnvValueSP templateRoot, DtEnvValueSP newRoot) const;
142 
145  };
146 
147  typedef boost::shared_ptr<EnvironmentContainer> EnvironmentContainerSP;
148 
149  class EntityData : public DtObjectType
150  {
151  public:
152  EntityData();
153  virtual ~EntityData();
154  EntityData(const DtObjectType& objectType, const DtObjectType& matchType = DtObjectType::nullType());
155  EntityData(const EntityData& t);
156 
157  //sets the object type
158  EntityData& operator=(const DtObjectType&);
159 
160  EntityData& operator=(const EntityData&);
161 
162  virtual EntityData* clone() const;
163 
164  //compares to the object type
165  bool operator>(const DtObjectType& rhs) const
166  {
167  if (*this < rhs)
168  {
169  return false;
170  }
171  else
172  {
173  return true;
174  }
175  }
176 
177  //compares to the object type
178  bool operator>(const EntityData& rhs) const
179  {
180  if (*this < rhs)
181  {
182  return false;
183  }
184  else
185  {
186  return true;
187  }
188  }
189 
191  std::string myDataFile;
192 
196 
199 
202 
205 
206  std::list<DtObjectType> myAdditionalMatchTypes;
207  std::list<DtObjectType> myOriginalAdditionalMatchTypes;
208 
210 
212  DtEnvValueSP myOriginalObjectNode;
221 
223  DtEnvValueSP myModifiedObjectNode;
230 
231  bool myIsNew;
233 
236  };
237 
238  typedef std::map<std::string, EntityData*> ParametersData;
239 
242 
243  virtual ~DtSimulationModelSetLoader();
244 
245  virtual bool load(const DtSimulationModelSet&, LoadFlags flags = LoadAll);
246  virtual bool save(const DtFilename&);
247 
248  static DtSimulationModelSetLoader& instance(makVrv::DtDe&);
249  static void registerInstance(makVrv::DtDe&, DtSimulationModelSetLoader*);
250 
251  virtual void setDisplayDe(makVrv::DtDe*);
252  virtual makVrv::DtDe& displayDe();
253 
254 private:
257 
258 public:
260  virtual void setLoadVisuals(bool);
261 
263  virtual bool hasFileNamed(const std::string& s) const;
264 
267  virtual bool addNewDataFile(const std::string&);
268 
270  virtual bool addNewSimulationObjectGroup(const std::string&);
271 
273  virtual bool addNewRandomizedObject(const std::string&);
274 
276  virtual bool readOnly() const;
277  virtual void setReadOnly(bool);
278 
280  virtual void setSaveReadOnlyFlag(bool);
281  virtual bool saveReadOnlyFlag() const;
282 
284  virtual bool hasComponentByDescriptorType(const makVrf::DtEntityMapperKey&, const DtString& descriptor) const;
285  virtual bool hasComponentByDescriptorType(const DtFilename&, const DtString& descriptor) const;
286 
288  virtual bool hasComponentByComponentType(const makVrf::DtEntityMapperKey&, const DtString& descriptor) const;
289  virtual bool hasComponentByComponentType(const DtFilename&, const DtString& descriptor) const;
290 
292  virtual bool simulationObjectGroupExists(const std::string&) const;
293 
295  virtual bool randomizedObjectExists(const std::string&) const;
296 
297  virtual QImage* warningIcon() const;
298 
301  virtual DtModelSetEntry* createNewSimulationObjectGroupFromExisting(const DtObjectType& base, const std::string& newName,
302  const DtRwNLengthStringVector& categories = DtRwNLengthStringVector("categories"));
303  virtual DtModelSetEntry* createNewSimulationObjectGroupFromExisting(EntityData* data, const std::string& newName,
304  const DtRwNLengthStringVector& categories = DtRwNLengthStringVector("categories"));
305  virtual DtModelSetEntry* createNewAmmunitionEntryFromExisting(EntityData* data, const std::string& newName, const DtEntityType& newType,
306  const DtRwNLengthStringVector& categories = DtRwNLengthStringVector("categories"));
307 
309  virtual std::string platform(const makVrf::DtEntityMapperKey& k) const;
310 
312  virtual std::string uiFilename(const makVrf::DtEntityMapperKey& k) const;
313 
315  virtual std::string uiFilename(DtComponentSystemDefinition*) const;
316 
318  virtual DtSimulationModelSet* simulationModelSet(const makVrf::DtEntityMapperKey& k) const;
319 
320  DtSimulationModelSet* masterSMS() const
321  {
322  return mySimulationModelSet;
323  }
324 
326  virtual DtSimulationModelSet* simulationModelSet(const DtComponentSystemDefinition*) const;
327  virtual DtSimulationModelSet* simulationModelSet(const DtFilename&) const;
328 
330  virtual std::string platformFileType(const makVrf::DtEntityMapperKey& k) const;
331 
333  virtual std::string platformKey(const makVrf::DtEntityMapperKey& k) const;
334 
336  virtual DtString platformDisplayName(const makVrf::DtEntityMapperKey& k) const;
337 
339  virtual DtString platformDisplayDescription(const makVrf::DtEntityMapperKey& k) const;
340 
342  virtual bool addMissingVariablesFromPlatformsAndSystems(QWidget* parent = 0, bool saveAllIfAnyModified = false);
343  virtual bool addMissingVariablesFromPlatformsAndSystems(EntityData* data, std::map<DtString, DtRwVariableBindings*>&);
344 
346  virtual void regenerateOpeFiles();
347 
349  virtual void regenerateSystemFiles();
350 
352  virtual std::vector<DtComponentSystemDefinition*> systemsThatCanBeDamagedBy(const DtString&) const;
353 
356  virtual DtString rangeTypeFromPower(const DtString&) const;
357  virtual void setDefaultRangeTypeForPower(const DtString&, const DtString&);
358  virtual std::vector<DtString> rangesByPowerType(const DtString&) const;
359  virtual void setSupportedRangesByPowerType(const DtString&, const std::vector<DtString>&);
360 
361  virtual std::set<DtString> powerTypes(bool hasHumanActuator) const;
362  virtual void addPowerType(const DtString&, const QString& withoutAddition, const QString& withAddition, bool needForceAdditional = false,
363  const QString& withoutAdditionX = "", const QString& witAdditionX = "", bool humanOnly = false);
364 
367  virtual QString powerTitle(const DtString&, const QString& addition = "", bool applyAdditionalToAll = false, bool xAxis = false) const;
369 
370  virtual void createSupportedDetonations();
371 
372  DtFilename getSystemDirectory() const;
373  DtFilename getNavDataDirectory() const;
374  DtFilename getFormationDirectory() const;
375  DtFilename getGuiDirectory() const;
376  DtFilename path() const;
377 
379  DtFilename simulationModelSetFilename() const;
380 
381  virtual bool openSystemFiles(DtSimulationModelSet* set, const DtFilename& directory, bool isInMasterSMS);
382 
383  virtual DtString cleanAmmunitionName(const DtString&) const;
384 
385  virtual bool loadForceHostilityFile(const DtFilename& f);
386  virtual bool loadAmmunitionParameters(const DtFilename& f, bool inMasterSMS, DtSimulationModelSet* sms);
387  virtual bool loadDetonationParameters(const DtFilename& f, bool inMasterSMS, DtSimulationModelSet* sms);
388 
391  virtual bool loadDataFiles(const DtString&, DtSimulationModelSet*, bool fromMasterSMS, LoadFlags flags = LoadAll);
392 
394  virtual void loadSimulationObjectGroupFiles(const DtString&, DtSimulationModelSet*, bool fromMasterSMS);
395 
397  virtual DtModelSetEntry* reloadSimulationObjectGroup(const DtString&);
398 
400  virtual void loadTemplates(const DtString&, DtSimulationModelSet*);
401 
402  virtual std::vector<DtComponentSystemDefinition*> systemsThatUseAmmunition(const DtString&) const;
403  virtual std::vector<DtComponentSystemDefinition*> systemsThatUseTemplate(const DtFilename&) const;
404 
406  virtual void makeTemplate(EntityData*);
407  virtual void makeTemplate(const DtObjectType&);
408 
410  virtual const std::vector<DtString>& iconLists() const;
411  virtual bool hasIconList(const DtString&) const;
412 
414  virtual void addIconList(const DtString&);
415  virtual void removeIconList(const DtString&);
416  virtual void setIconLists(const std::vector<DtString>&);
417  virtual void loadIconLists(const DtFilename&);
418  virtual void saveIconLists(const DtFilename&);
419 
421  virtual bool loadParameterFiles(DtSimulationModelSet* sms, bool inMasterSMS);
422 
424  virtual bool loadModelSet();
425 
428  virtual DtModelSetEntry* modelEntry(const DtObjectType&, bool matchPattern = false) const;
429 
431  virtual DtFilename modelDefinitionFile(const DtObjectType&, bool resolve) const;
432 
434  virtual DtString simulationModelSetFor(const DtEntityType&) const;
435 
437  virtual DtString simulationModelSetFor(const DtFilename&) const;
438 
440  virtual DtModelSetEntry createModelSetEntryFrom(DtEnvironmentSP env, DtEnvValueSP objectNode) const;
441  virtual DtModelSetEntry createModelSetEntryFrom(const DtObjectType&) const;
442  virtual DtModelSetEntry createModelSetEntryFrom(const DtAmmunitionParamsEntry*) const;
443 
445  virtual bool hasGuiKeyword(const makVrf::DtEntityMapperKey&, const std::string&) const;
446 
448  virtual void revertData(const makVrf::DtEntityMapperKey& key);
449  virtual void revertData(DtComponentSystemDefinition*);
450 
452  virtual EntityData* dataFor(const DtObjectType&) const;
453 
455  virtual EntityData* dataFor(DtModelSetEntry*) const;
456 
459  virtual bool containsObjectType(const DtObjectType&, bool onlyFromMasterSMS = false, DtString* name = 0) const;
460 
462  virtual DtVariableBindingsList allVariableBindingsInSystemsFor(const DtObjectType&) const;
463 
465  virtual bool isSimulationObjectGroup(const DtObjectType&) const;
466 
469  virtual bool hasModelNamed(const DtString&, bool& isDeleted);
470 
471  virtual DtReaderWriter::SearchPaths searchPaths() const;
472  virtual std::vector<DtSimulationModelSet*> modelSets() const;
473 
474  virtual QString ammunitionDisplayName(const DtEntityType&) const;
475 
476  virtual const ParametersMap& availableParameters() const
477  {
478  return myAvailableParameters;
479  }
480 
482  virtual bool hasHumanDamageSystem(const std::vector<DtComponentSystemDefinition*>&) const;
483 
486  virtual bool createRwVariable(const DtObjectType&, const std::string& rwType, const std::string& rwName, DtReaderWriter*& source,
487  DtReaderWriter*& backup);
488 
489  virtual void replaceSystem(const DtFilename&);
490 
491  virtual bool entryIsRandomized(const DtObjectType&) const;
492  virtual bool canAddSubordinatesTo(const DtObjectType&) const;
493 
494  virtual bool isModified(const DtObjectType&) const;
495  virtual bool isModified(EntityData*) const;
496  virtual bool isModified(DtComponentSystemDefinition*) const;
497 
499  virtual bool isModified(const DtFilename&) const;
500 
501  virtual bool isModified() const;
502 
503  virtual bool isNew(const DtObjectType&) const;
504  virtual bool isNew(EntityData*) const;
505 
506  virtual bool isDeleted(const DtObjectType&) const;
507  virtual bool isDeleted(EntityData*) const;
508 
509  virtual bool isDeleted(DtComponentSystemDefinition*) const;
510  virtual bool isDeleted(const DtFilename&) const;
511 
512  virtual bool isNew(DtComponentSystemDefinition*) const;
513  virtual bool isNew(const DtFilename&) const;
514 
515  virtual std::vector<EntityData*> objectsThatUseSystems(const std::vector<DtComponentSystemDefinition*>& rw) const;
516 
517  virtual makVrf::DtVrfEntityTypeMapper& entityTypeMapper(const makVrf::DtEntityMapperKey&);
518  virtual makVrf::DtVrfEntityTypeMapper& aggregateTypeMapper(const makVrf::DtEntityMapperKey&);
519  virtual makVrf::DtVrfEntityTypeMapper& tacticalGraphicsMapper(const makVrf::DtEntityMapperKey&);
520  virtual makVrv::DtElementDefinitionTypeManager& elementDefinitionTypeManager(const makVrf::DtEntityMapperKey&);
521  virtual makVrv::DtModelDefinitionManager& modelDefinitionManager(const makVrf::DtEntityMapperKey&);
522 
523  virtual void saveModelDefinitionManager();
524  virtual void saveVisualElementsFor(makVrv::DtElementDefinitionTypeManager::BuiltInElementTypes);
525  virtual makVrf::DtVrfVisualsManager* visualsManager();
526 
527  virtual makVrf::DtVrfEntityTypeMapper& defaultEntityTypeMapper();
528  virtual makVrf::DtVrfEntityTypeMapper& defaultAggregateTypeMapper();
529  virtual makVrf::DtVrfEntityTypeMapper& defaultTacticalGraphicsMapper();
530  virtual makVrv::DtElementDefinitionTypeManager& defaultElementDefinitionTypeManager();
531  virtual makVrv::DtModelDefinitionManager& defaultModelDefinitionManager();
532 
533  virtual makVrv::DtEntityTypeMapper* systemEntityTypeMapper();
534  virtual makVrv::DtEntityTypeMapper* systemAggregateTypeMapper();
535  virtual makVrv::DtEntityTypeMapper* systemTacticalGraphicsMapper();
536  virtual makVrv::DtElementDefinitionTypeManager& systemElementDefinitionTypeManager();
537  virtual makVrv::DtModelDefinitionManager& systemModelDefinitionManager();
538 
539  virtual void createSpotReportDefinitionFor(const makVrf::DtEntityMapperKey&);
540  virtual void updateVisualsFor(const makVrf::DtEntityMapperKey&);
541  virtual void removeVisualsFor(const makVrf::DtEntityMapperKey&);
542  virtual void removeElementDefinition(const makVrf::DtEntityMapperKey&);
543 
545  virtual void deleteModel(DtModelSetEntry*);
546  virtual void deleteModel(const DtObjectType&);
547  virtual void deleteModel(EntityData*);
548 
549  virtual void deleteSystem(const DtComponentSystemDefinition*);
550  virtual void deleteSystem(const DtFilename&);
551 
553  virtual bool deleteSystemFromModelSet(const DtComponentSystemDefinition*);
554 
556  virtual bool changeObjectType(const DtObjectType& oldType, const DtObjectType& newType);
557 
559  virtual bool changeMatchType(const DtObjectType& oldType, const DtObjectType& newType);
560 
561  virtual bool setAdditionalMatchTypes(const DtObjectType& key, const std::list<DtObjectType> additionalMatchTypes);
562 
565  virtual void updateGuiInformation(EntityData*);
566 
568  virtual void updateSystemData(EntityData*);
569 
571  virtual void sharedSystems(const DtFilename& systemFile, std::vector<DtModelSetEntry*>& result) const;
572 
574  virtual void updateDataInformation(EntityData*);
575 
577  virtual void convertRegistryToEnvironment(const DtReaderWriterRegistry& data, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
578 
580  virtual void removeSystem(DtEnvironmentSP env, const DtString& system, DtEnvValueSP objectNode);
581 
583  virtual void addSystem(DtEnvironmentSP env, const DtRwVariableBindings*, DtEnvValueSP objectNode);
584 
585  virtual const QStringList& masterModeCategories(CategoryTypes) const;
586  virtual QStringList& masterModeCategories(CategoryTypes);
587  virtual QStringList defaultCategoriesAsStringList(CategoryTypes) const;
588 
589  DtSimulationObjectCategoryInformation& defaultCategories(CategoryTypes);
590  const DtSimulationObjectCategoryInformation& defaultCategories(CategoryTypes) const;
591 
592  DtSimulationObjectCategoryInformation& nonMasterModeCategories(CategoryTypes);
593  const DtSimulationObjectCategoryInformation& nonMasterModeCategories(CategoryTypes) const;
594 
595  virtual void loadAutoTagInformation();
596 
597  DtAutoTagInformation& autoTagInformation();
598  const DtAutoTagInformation& autoTagInformation() const;
599 
600  virtual void setDefaultCategories(const DtSimulationObjectCategoryInformation&, const QStringList& masterMode, CategoryTypes);
601  virtual void revertCategories(CategoryTypes);
602  virtual bool hasModifiedCategories(CategoryTypes) const;
603  virtual bool saveDefaultCategories(const DtFilename&, CategoryTypes);
604  virtual bool loadDefaultCategories(const DtFilename&, CategoryTypes);
605 
606  void setDefaultOverlayLayers(const QStringList&);
607  const QStringList& defaultOverlayLayers() const;
608  virtual void revertOverlayLayers();
609  virtual bool hasModifiedOverlayLayers() const;
610  virtual void changeDefaultOverlayLayer(const QString& old, const QString& newCat);
611  virtual void addDefaultOverlayLayers(QComboBox*);
612  void addDefaultOverlayLayer(const QString&);
613 
614  virtual DtRwForces favoritesFor(const DtModelSetEntry*) const;
615  virtual DtRwForces backupFavoritesFor(const DtModelSetEntry*) const;
616  virtual void setFavoritesFor(DtModelSetEntry*, const DtRwForces&);
617 
618  virtual void changeDefaultDeployedCountry(const QString& old, const QString& newCat);
619  virtual void addDefaultDeployedCountries(QComboBox*);
620  void setDefaultDeployedCountries(const QStringList&);
621  void addDefaultDeployedCountry(const QString&);
622  const QStringList& defaultDeployedCountries() const;
623  virtual void revertDeployedCountries();
624  virtual bool hasModifiedDeployedCountries() const;
625 
627  virtual void resetVisuals();
628 
630  virtual DtRwVariableBindings* createVariableBindingsForSystem(const DtFilename&, const DtString& newSystemName);
631 
633  virtual std::map<std::string, DtEntityType> templatesForKind(int) const;
634  virtual std::map<std::string, DtEntityType> templatesThatMatch(const DtEntityType&) const;
635 
638  virtual DtModelSetEntry* addNewEntity(const DtObjectType& base, const DtObjectType& newType, const DtString& name,
639  const DtRwNLengthStringVector& categories, const DtString& uniqueID, const makVrv::DtUnicode& elementDefinition = makVrv::DtUnicode::fromAscii(""));
640 
643  virtual DtModelSetEntry* addNewEntity(const std::string& platformType, const DtObjectType& newType, const DtString& name,
644  const DtRwNLengthStringVector& categories, const DtString& uniqueID, const makVrv::DtUnicode& elementDefinition = makVrv::DtUnicode::fromAscii(""));
645 
647  DtModelSetEntry* addNewEntity(EntityData* baseData, const DtObjectType& newType, const DtString& name,
648  const DtRwNLengthStringVector& categories, const DtString& uniqueID, const makVrv::DtUnicode& elementDefinition = makVrv::DtUnicode::fromAscii(""));
649 
651  virtual void removeSystem(const DtFilename&);
652 
653  virtual const DtRwVariableBindings* variableBindings() const;
654 
655  virtual QPixmap getIcon(const makVrf::DtEntityMapperKey& key, int pointSize = 48,
656  bool sizeToFont = false);
657 
658  virtual QPixmap getUnfilledIcon(const makVrf::DtEntityMapperKey& key, const QColor& outlineColor = Qt::black, int pointSize = 48,
659  bool sizeToFont = false);
660 
661  virtual void clearIcons(const makVrf::DtEntityMapperKey& key);
662 
663  static DtSimulationModelSetLoader* create(makVrv::DtDe*);
664 
666  virtual void changeSubordinateTypes(const DtObjectType& oldType, const DtObjectType& newType);
667 
668  virtual void checkParameterUpdates(EntityData*);
669  virtual void checkParameterUpdates(const std::set<makVrf::DtEntityMapperKey>&);
670 
672  virtual makVrv::DtUnicode elementDefinitionFor(const DtEntityType&);
673 
675  virtual DtVrfSubObjectParameterList subordinateObjectsFor(const DtObjectType&) const;
676  virtual DtVrfSubObjectParameterList subordinateObjectsFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
677 
679  virtual void updateSubordinateObjects(const DtObjectType&, const DtVrfSubObjectParameterList&);
680  virtual void updateSubordinateObjects(DtEnvironmentSP, DtEnvValueSP objectNode, const DtVrfSubObjectParameterList&);
681 
683  virtual void updateFormationTable(const DtObjectType&, const DtFormationTable&);
684 
686  virtual DtEmbarkationInformation embarkationInformationFor(const DtObjectType&) const;
687  virtual DtEmbarkationInformation embarkationInformationFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
688 
690  virtual void updateEmbarkationInformation(const DtObjectType&, const DtEmbarkationInformation&);
691  virtual void updateEmbarkationInformation(DtEnvironmentSP, DtEnvValueSP objectNode, const DtEmbarkationInformation&);
692 
694  virtual DtDiGuyInformation diGuyInformationFor(const DtObjectType&) const;
695 
697  virtual void updateDiGuyInformation(const DtObjectType&, const DtDiGuyInformation&);
698 
700  virtual DtSensorSignatureInformation sensorSignatureInformationFor(const DtObjectType&) const;
701  virtual DtSensorSignatureInformation sensorSignatureInformationFor(DtEnvironmentSP, DtEnvValueSP root) const;
702 
704  virtual void updateSensorSignatureInformation(const DtObjectType&, const DtSensorSignatureInformation&);
705  virtual void updateSensorSignatureInformation(DtEnvironmentSP, DtEnvValueSP root, const DtSensorSignatureInformation&);
706 
708  virtual DtFormationTable* formationTableFor(const DtObjectType&);
709  virtual DtFormationTable* originalFormationTableFor(const DtObjectType&);
710 
712  virtual Dt3dBoundingVolume boundingVolumeFor(const DtObjectType&) const;
713 
715  virtual bool isAggregate(const DtObjectType&) const;
716 
717  bool loaded() const
718  {
719  return myLoaded;
720  }
721 
722  const DtOrderedObjectTypeList<EntityData*>& entityData() const
723  {
724  return myEntityData;
725  }
726 
727  virtual bool isTemplate(const DtObjectType&) const;
728  virtual bool templateExists(const DtObjectType&) const;
729 
730  virtual void setForceManagerModified(bool);
731  virtual bool forceManagerModified() const;
732 
733  virtual bool isInMasterSMS(const DtObjectType&) const;
734  virtual bool isInMasterSMS(const DtFilename&) const;
735  virtual bool isInMasterSMS(const DtComponentSystemDefinition*) const;
736 
737  virtual DtString smsName(const DtObjectType&) const;
738  virtual DtString smsName(const DtFilename&) const;
739  virtual DtString smsName(const DtComponentSystemDefinition*) const;
740 
741  virtual const DtComponentSystemDefinition* originalSystemDefinitionFor(const DtComponentSystemDefinition*) const;
742  virtual const DtComponentSystemDefinition* originalSystemDefinitionFor(const DtFilename&) const;
743 
745  virtual bool saveData();
746  virtual bool saveData(EntityData* data, bool force = false);
747 
749  virtual bool saveFavorites();
750 
752  virtual bool saveSystems();
753 
755  virtual bool saveAmmunitionTable();
756 
758  virtual bool saveDetonationTable();
759 
761  virtual DtObjectType templateObjectType(const std::string& parameterType) const;
762 
764  virtual void addInternalItem(const std::string&, bool markDataAsWell = true);
765 
767  virtual void addIgnorePlatformType(const DtString&);
768 
771  virtual QString parameterDisplayName(const DtString& parameterType, bool stopAtFirst = true) const;
772 
774  virtual std::map<DtString, QString> availableParameterTypes(const std::set<std::string>& except = std::set<std::string>()) const;
775 
778  virtual std::vector<DtReaderWriter*> supportPointsFor(const DtObjectType&) const;
779 
781  virtual DtObjectType uniqueEntityTypeFrom(const DtObjectType&, bool onlyFromMasterSMS = false) const;
782 
784  virtual makVrv::DtUnicode systemNameForSystem(const std::string&, DtFilename& fullFilename) const;
785 
787  virtual bool hasFactoryChecksums() const;
788 
790  virtual const DtSmsChecksum& factoryChecksums() const;
791 
793  virtual DtRwVisualMetaData* addOrUpdateVisualMetaData(const DtEntityType&);
794 
796  virtual DtComponentSystemDefinition* duplicateSystem(const DtComponentSystemDefinition* base, const DtString& systemName, const DtFilename& systemFilename);
797 
799  virtual DtComponentSystemDefinition* createFromTemplate(const DtString& systemName, const DtFilename& systemFilename, const DtComponentSystemDefinition* systemTemplate);
800  virtual DtFilename filenameToSystemFilename(DtFilename systemFilename) const;
801 
804  virtual void promoteSystem(DtComponentSystemDefinition*);
805 
807  virtual std::map<DtSymbolString, DtAmmunitionParamsEntry*> ammunitionTable() const;
808 
810  virtual DtAmmunitionParamsEntry* addAmmunition(const DtString& name, const DtString& label, const DtObjectType& munitionType);
811 
813  virtual DtAmmunitionParamsEntry* ammunitionEntry(const DtSymbolString&) const;
814  virtual DtAmmunitionParamsEntry* ammunitionEntry(const DtObjectType&) const;
815 
817  virtual DtMunitionDetonationPowerEntry* detonationPowerEntry(const DtObjectType&) const;
818 
819  virtual std::set<DtEntityType> detonationTypes() const;
820  virtual DtMunitionDetonationPowerEntry* duplicatePowerEntry(const DtObjectType&, const DtEntityType&);
821 
823  virtual std::vector<DtTargetingControlTable*> getTargetingControlTables(const makVrf::DtEntityMapperKey&) const;
824 
826  virtual std::map<DtComponentSystemDefinition*, const DtRangeProbabilityTable*> getSystemsAndHitTables() const;
827 
829  typedef std::map<const DtComponentSystemDefinition*, std::pair<const DtTargetingControlTable*,
831  virtual TargetingControlAndRangeTables getTargetingControlAndRangeTables(const makVrf::DtEntityMapperKey&) const;
832  virtual void findAllTargetingControlAndRangeTables(const DtString&, TargetingControlAndRangeTables&) const;
833 
835  virtual DtRwDamageByMunitionPowerMap* damageTableFor(const makVrf::DtEntityMapperKey&, DtComponentSystemDefinition** system = 0) const;
836 
837  virtual QString translatedSystemName(const DtComponentSystemDefinition* definition) const;
838  virtual QString translatedSystemDescription(const DtComponentSystemDefinition* definition) const;
839 
841  virtual DtObjectType ammunitionType(const DtSymbolString&) const;
842 
844  virtual QString ammunitionDisplayName(const DtSymbolString&) const;
845  virtual void setAmmoEntryIfNecessary(EntityData* data, const DtAmmunitionParamsEntry* templateEntry = 0);
846 
848  virtual bool ammunitionCanTarget(const DtSymbolString&, const DtEntityType&) const;
849 
850  boost::signal<void ()> signal_preloadSimulationModelSet;
851  boost::signal<void ()> signal_simulationModelSetLoaded;
852  boost::signal<void (std::vector<EntityData*>)> signal_newDataFileAdded;
853  boost::signal<void (EntityData*)> signal_entityEntryAboutToBeRemoved;
854  boost::signal<void (EntityData*)> signal_entityEntryAdded;
855  boost::signal<void (EntityData*)> signal_visualMappingsModified;
856  boost::signal<void ()> signal_resetVisuals;
857  boost::signal<void (bool)> signal_readOnlyChanged;
858  boost::signal<void (DtComponentSystemDefinition*)> signal_systemEntryAdded;
859  boost::signal<void (const DtFilename&)> signal_systemRemoved;
860  boost::signal<void (DtComponentSystemDefinition*)> signal_systemAboutToBeRemoved;
861  boost::signal<void (const DtObjectType&, const DtObjectType&)> signal_objectTypeAboutToBeChanged;
862  boost::signal<void (const DtObjectType&, const DtObjectType&)> signal_objectTypeChanged;
863 
864 public:
865  const DtModelSet* modelSet() const;
866  DtModelSet* modelSet();
867 
868  virtual makVrv::DtForceManager* forceManager();
869 
870  const DtSimulationModelSet& simulationModelSet() const;
871  bool hasSimulationModelSet() const;
872  DtSimulationModelSet& simulationModelSet();
873  const DtFilename& parameterFilename() const;
874  const DtSimulationObjectEditorComponentSystemDatabase* originalSystemDatabase() const;
875  const DtSimulationObjectEditorComponentSystemDatabase* modifiedSystemDatabase() const;
876  const DtSimulationObjectEditorComponentSystemDatabase* templateSystemDatabase() const;
877  DtSimulationObjectEditorComponentSystemDatabase* modifiedSystemDatabase();
878  DtFilename modelSetDirectory() const;
879 
880  virtual void forceRemoved(DtForceType forceType);
881 
882  const DtRwForces& allForces() const;
883 
884  virtual std::vector<const DtComponentSystemDefinition*> systemDefinitionsFor(const DtObjectType& o) const;
885 
886  virtual const DtReaderWriter* findVariable(const DtVariableBindingsList&, const DtString&) const;
887  virtual const DtReaderWriter* findOriginalVariable(const makVrf::DtEntityMapperKey& emk, const DtString&) const;
888  virtual const DtReaderWriter* findModifiedVariable(const makVrf::DtEntityMapperKey& emk, const DtString&) const;
889  virtual DtReaderWriter* findVariable(const DtVariableBindingsList&, const DtString&);
890  virtual DtReaderWriter* findOriginalVariable(const makVrf::DtEntityMapperKey& emk, const DtString&);
891  virtual DtReaderWriter* findModifiedVariable(const makVrf::DtEntityMapperKey& emk, const DtString&);
892  virtual const DtReaderWriter* variableFromAnyPlatform(const DtString& varName) const;
893 
894  virtual void addModifiedVariable(const makVrf::DtEntityMapperKey& emk, DtReaderWriter* rw);
895 
896  virtual DtVrfObjectParameters* platformParameters(const makVrf::DtEntityMapperKey& key) const;
897 
898  virtual const DtStandardSensorObjects& standardSensorObjects() const;
899  virtual DtStandardSensorObjects& standardSensorObjects();
900  virtual bool processModelSet(DtSimulationModelSet*, LoadFlags flags = LoadAll, bool isMasterSMS = false);
901 
902 protected:
903  virtual void replaceVariableNamesWithUpdatedVariableNames(DtRwVariableBindings*, const DtComponentSystemDefinition*);
904 
908  virtual void markInternalItemsAsReadOnly(DtVariableBindingsList*);
909 
910  virtual const DtReaderWriter* findVariable(const DtString& var, const DtReaderWriter* rw) const;
911 
912  virtual void loadSystemFilesFromDirectory(const QString& directoryName, const DtVariableBindingsList& variableBindings, DtSimulationModelSet*, bool isInMasterSMS,
913  bool loadTemplates = false);
914 
915  virtual void addVariableReferences(DtReaderWriter* source, DtRwVariableBindings* toBindings) const;
916 
917  virtual void cleanup();
918  virtual bool ignorePlatformType(const DtString&) const;
919 
920  virtual bool saveForceHostility(const DtFilename& filename);
921 
922  virtual bool warned(const DtFilename&);
923  virtual void removeEntityFromSubObjects(const DtObjectType&);
924 
925  virtual void mergeFavoritesIntoModelSet(DtModelSet* favorites, DtModelSet* set);
926 
927  virtual DtVariableBindingsList* copyBindingsList(const DtVariableBindingsList* orig) const;
928 
929  virtual EntityData* createParameterDataFrom(DtVrfObjectParameters*) const;
930 
932  virtual bool updateFromPlatform(EntityData* data, const DtReaderWriter* oldRegData, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
933 
935  virtual bool traverseRwObject(const DtReaderWriter* rwObject, DtEnvironmentSP env, DtEnvValueSP objectNode) const;
936  virtual void addElementFromSystemBinding(DtEnvironmentSP env,
937  DtEnvValueSP parentElement, DtSystemParameterData* paramData) const;
938 
939  virtual DtFormationTable* formationTableFor(DtEnvironmentSP, DtEnvValueSP objectNode) const;
940 
942  virtual void updateFormationTable(DtEnvironmentSP, DtEnvValueSP objectNode, const DtFormationTable&);
943 
944  virtual std::vector<EntityData*> addDataFromFile(const DtString& file,
945  DtSimulationModelSet* set, bool isMasterSMS,
946  bool signalAddition = true, bool isTemplate= false, LoadFlags flags = LoadAll);
947 
948  virtual DtModelSetEntry* addModelSetEntryFromEnvironment(DtEnvironmentSP, DtEnvValueSP node);
949  virtual DtModelSetEntry* addModelSetEntryFromSimulationObjectGroup(EntityData*);
950 
951  virtual void addToInternalCategories(DtModelSetEntry* entry, bool isInMasterSMS);
952  virtual void addToInternalCategories(const DtComponentSystemDefinition* entry, bool isInMasterSMS);
953 
954  virtual void addEntityDataEntry(EntityData*, bool signal = true);
955  virtual void removeEntityDataEntry(EntityData*, bool signal = true);
956 
958  virtual ParametersMap::const_iterator findAvailablePlatform(const DtString& platform) const;
959  virtual ParametersData::const_iterator findAvailableParameter(const DtString& platform) const;
960  virtual ParametersData::const_iterator findAvailableParameterFromFile(const DtFilename& platform) const;
961  virtual ParametersData::const_iterator findAvailableParameterType(const DtString& parameterType) const;
962 
964  virtual void swapCurrentEntry(EntityData*, DtModelSetEntry*);
965 
967  virtual DtString filenameFromEntityName(const DtString& name) const;
968 
970  virtual DtString uniqueEntityFilename(const DtString& name) const;
971 
973  virtual void loadVisuals(DtSimulationModelSet*, bool createIfDoesNotExist = false);
974 
976  virtual bool updateAndAddMatchTypeVisuals(EntityData* baseType, const DtEntityType& matchType);
977 
979  virtual bool removeMatchingTypeFromVisuals(const DtEntityType& matchType);
980 
981  virtual void finalizeCategoryInformationFor(const DtSimulationModelSet& sms, CategoryTypes type = EntityCategories);
982 
983  virtual DtFilename categoryFilename(const DtSimulationModelSet& sms, CategoryTypes type = EntityCategories) const;
984 
985  virtual void convertAmmunitionToEntityData(DtAmmunitionParams*, bool inMasterSMS, DtSimulationModelSet* sms);
986  virtual DtAmmunitionParams* createAmmunitionParameters() const;
987  virtual DtDetonationParams* createDetonationParameters() const;
988 
989 protected:
990  QStringList myWarned;
995 
996  typedef std::map<DtFilename, bool> SystemIsInMasterSMSMap;
998 
1002  QImage* myWarningIcon;
1003 
1004  typedef std::map<int, DtSimulationObjectCategoryInformation> CategoriesMap;
1008 
1009  typedef std::map<int, QStringList> StringCategoriesMap;
1016  bool myLoaded;
1019 
1022 
1024 
1026 
1029 
1030  std::set<std::string> myInternalItems;
1031  std::set<DtString> myIgnorePlatformType;
1034 
1035  typedef std::map<DtModelSetEntry*, EntityData*> EntityDataByEntry;
1037 
1038  std::vector<QTranslator*> myTranslators;
1040 
1042 
1043  std::map<DtString, int> myMatchingVisualTypes;
1045 
1048 
1051 
1052  std::map<DtString, DtString> myDefaultRangeForPowerType;
1053  std::map<DtString, std::vector<DtString> > mySupportedRangesByPowerType;
1054 
1055  struct PowerTitle
1056  {
1058  QString withAdditionX;
1060  QString withAdditionY;
1063  };
1064 
1065  std::vector<DtString> myIconLists;
1066  std::vector<DtString> myOriginalIconLists;
1067  std::map<DtString, PowerTitle> myPowerTypes;
1068 };
1069 
1071 {
1073  {
1074  return mySimulationModelSet->filename();
1075  }
1076  else
1077  {
1078  return "";
1079  }
1080 }
1081 
1083 {
1084  return (mySimulationModelSet != 0);
1085 }
1086 
1088 {
1089  return *mySimulationModelSet;
1090 }
1091 
1093 {
1094  return *mySimulationModelSet;
1095 }
1096 
1098 {
1099  return myModelSet;
1100 }
1101 
1103 {
1104  return myModelSet;
1105 }
1106 
1107 inline const DtFilename& DtSimulationModelSetLoader::parameterFilename() const
1108 {
1109  return myParameterFilename;
1110 }
1111 
1113 {
1114  return myAllForces;
1115 }
1116 
1118 {
1119  return myAutoTagInformation;
1120 }
1121 
1123 {
1124  return myAutoTagInformation;
1125 }
1126 
1128 {
1129  CategoriesMap::const_iterator iter = myDefaultCategories.find(type);
1130 
1131  return iter->second;
1132 }
1133 
1135 {
1136  return myDefaultCategories[type];
1137 }
1138 
1140 {
1141  CategoriesMap::const_iterator iter = myNonMasterModeCategories.find(type);
1142 
1143  return iter->second;
1144 }
1145 
1147 {
1148  return myNonMasterModeCategories[type];
1149 }
1150 
1151 inline const QStringList& DtSimulationModelSetLoader::defaultOverlayLayers() const
1152 {
1153  return myDefaultOverlayLayers;
1154 }
1155 
1157 {
1159 }
1160 
1162 {
1163  myDefaultOverlayLayers.push_back(l);
1164 }
1165 
1167 {
1169 }
1170 
1172 {
1174 }
1175 
1177 {
1178  myDefaultDeployedCountries.push_back(l);
1180 }
1181 
1183 
1185 {
1186  return !(lhs.operator<(rhs));
1187 }
1188 
1190 {
1191 public:
1193 
1195 
1196  virtual void loadAllSmsFiles();
1197 
1198 protected:
1199  virtual void processModelSet(DtSimulationModelSet*);
1200 
1201 protected:
1206 };

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)