VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfObjectManager.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 
11 #include "vrfutil/rwObjectType.h"
13 #include "vrfutil/rwList.h"
19 #include "vrfobjcore/vrfObject.h"
24 #include "vrfutil/rwActivities.h"
26 
28 #include <vlpi/appearance.h>
29 #include <vlutil/vlFilename.h>
30 #include <vlutil/vlList.h>
31 #include <vlutil/vlHashlist.h>
32 #include <vlutil/vlConfig.h>
33 #include <vlutil/vlSmartPointers.h>
35 
37 #include <vector>
38 #include <list>
39 #include <set>
40 
41 #include <boost/unordered_map.hpp>
42 #include <boost/unordered_set.hpp>
43 
45 #define DT_SINGLE_STATE_UPDATE_MESSAGE 0
46 
47 class DtExerciseConn;
48 class DtReflectedObject;
49 class DtReflectedAggregate;
54 class DtVrfParameterDb;
56 class DtSimObjectSubComponentTypes;
58 class DtVertexList;
60 class DtBaseEntityStateRepository;
62 class DtSimManager;
63 class DtVrfObjectManagerTickArguments;
65 class DtSimTickArguments;
66 class DtSimMessage;
68 class DtIfAggregateAs;
72 class DtReflectedObject;
73 class DtEchelonIdTable;
74 class DtEchelonId;
75 class Coordinate_System;
80 class DtReflectedDesignator;
83 class DtReflectedActiveSonar;
84 class DtReflectedActiveSonarList;
85 class DtReflectedPropulsionNoise;
86 class DtReflectedPropulsionNoiseList;
87 class DtCreateQueueEntry;
88 class DtModifyQueueEntry;
90 
93 typedef void (*DtSimObjectListActivityCallbackFcn)(DtVrfObject* simObject,
94  void* usr);
95 
97 typedef bool (*DtSimObjectUserInitFcn)(DtVrfObject* object, void* usr);
98 
102  void* usr);
103 
105 typedef bool (*DtVrfObjectUserInitFcn)(DtVrfObject* vrfObject, void* usr);
106 
109 typedef void (*DtVrfObjectManagerCallbackFcn)(const DtVrfObjectManager& objectManager,
110  void* usr);
111 
115 const int DtSimMaxForceTypes = 256;
116 
119 {
121  void* myUserData;
122 };
123 
126 {
132 
135  unsigned int importFlags;
139 };
140 
143 {
147 };
148 
151 {
155 };
156 
159 {
161  DtEntityIdentifier* myEntityIdentifier;
162 };
163 
168 
170 typedef enum
171 {
176 
189 {
190 public:
192 
196  typedef enum
197  {
198  DtUseParameterDatabaseAggregateState = 0,
200  DtCreateDisaggregatedEntity
201  } DtAggregateCreationMode;
202 
203 public:
204 
206  DtVrfObjectManager(DtSimManager* simManager, int entityAdvisory = 100);
207 
213  virtual ~DtVrfObjectManager();
216 
218  virtual void clearRemoteComponentAttachmentSystem();
219 
225  virtual bool reuseEntityIdentifiersOnScenarioLoad() const;
226  virtual void setReuseEntityIdentifiersOnScenarioLoad(bool);
227 
230  virtual DtEntityIdentifier nextEntityIdentifier(DtVrfObject*, const DtEntityIdentifier&);
231  virtual void addVrfObjectAboutToBePublishedCallback(
232  DtVrfObjectAboutToBePublishedCallbackFcn fcn, void* usrData);
233  virtual void removeVrfObjectAboutToBePublishedCallback(
234  DtVrfObjectAboutToBePublishedCallbackFcn fcn, void* usrData);
235 
238  virtual void createRemoteComponentAttachmentManager();
239 
241  virtual bool isRemoteComponentAttachment(const DtUUID&) const;
242 
244  virtual bool initializeRemoteComponentAttachmentSystem(const DtFilename& fromFile);
245 
247  DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager();
248  const DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager() const;
250 
253  virtual bool create();
254 
257  virtual bool init();
258 
260  virtual void createDIGuyCharacterManager(const DtFilename & diGuyDataFile,
261  const DtFilename & diGuyAnimationsFile);
262 
272  virtual bool add(DtVrfObject* simObject);
273 
275  virtual void completeObjectAddition(DtVrfObject* simObject);
276 
278  virtual bool loadingScenarioInformation() const;
279 
280 private:
283  using DtRwList::add;
284  using DtRwList::remove;
285 
286 public:
288  virtual void setParameterDatabase(DtVrfParameterDb* parameterDatabase);
289  virtual DtVrfParameterDb* parameterDatabase();
290 
292  virtual DtManagedObjectListConstPtr getList(const DtVrfObjectPredicate& predicate,
293  bool reevaluateFlag = false, DtTime evaluationPeriod = 0);
294 
296  virtual void setImportingScenario(bool);
297  virtual bool importingScenario() const;
298 
300  virtual void setImportScenarioData(const DtImportScenarioData&);
301  virtual const DtImportScenarioData& importScenarioData() const;
302 
303  virtual const DtVrfObjectFilterIterator& vrfIterator(
304  const DtObjectType& filter = DtObjectType::anyType(),
305  bool invertFilter = false) const;
306 
307  virtual const DtVrfObjectFilterIterator& vrfIterator(
308  const DtVrfObjectPredicate& predicate) const;
309 
312  virtual const DtVrfObjectFilterIterator& vrfIterator(DtFilterFcn filter,
313  bool invertFilter = false, void* usrData = 0)const;
314 
317  virtual void removeAndDelete(const DtUUID& objectName);
318  virtual void removeAndDelete(DtSharedVrfObjectReference simObject);
319  virtual void removeAndDelete(const DtEntityIdentifier& key);
320  virtual void removeAndDelete(DtVrfObject* object);
321 
323  std::set<DtGlobalObjectDesignator> remoteObjectGlobalIds(bool onlyVrfSimulated = true) const;
324 
326  virtual void removeAndDeleteAllLocals();
327 
330  virtual void removeAndDeleteAll();
331 
336  virtual void setExerciseConnection(DtExerciseConn* connection);
337  virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
338 
341  virtual void setPublishZeroVelocityWhenPaused(bool);
342  virtual bool publishZeroVelocityWhenPaused() const;
343 
345  virtual void setDataDir(const DtFilename&);
346  virtual const DtFilename& dataDir() const;
347 
349  virtual void setUserDataDir(const DtFilename&);
350  virtual const DtFilename& userDataDir() const;
351 
355  virtual void setSetDeadReckoningAlgorithmToStaticOnPause(bool);
356  virtual bool setDeadReckoningAlgorithmToStaticOnPause() const;
357 
359  virtual void setTaskVisualizationPublicationMode(DtTaskVisualizationPublicationMode mode);
360  virtual DtTaskVisualizationPublicationMode taskVisualizationPublicationMode() const;
361 
364  virtual void setUseDrawControlForTaskVisualizations(bool);
365  virtual bool useDrawControlForTaskVisualizations() const;
366 
368  virtual DtReflectedControlObjectList* reflectedEnvironmentProcessList() const;
369 
372  virtual DtReflectedControlObjectList* createReflectedControlObjectList(DtExerciseConn* exConn);
373 
380  virtual void registerInterfaceCallbacks();
381 
383  virtual const DtSimManager* simManager() const;
385  virtual DtSimManager* simManager();
386 
396  virtual void processCreateVrfObject(DtSimMessage* msg);
397 
404  virtual void processCreateVrfObject(DtIfCreateVrfObject ifCreateVrfObject);
405 
413  virtual void processModifyVrfObject(DtSimMessage* msg);
414 
421  virtual void processModifyVrfObject(DtIfModifyVrfObject modObj);
422 
425  virtual void processModifyVrfOverlay(DtSimMessage* msg);
428  virtual void processDeleteVrfObject(DtSimMessage* msg);
431  virtual void processDeleteVrfObjectById(DtSimMessage* msg);
434  virtual void processVrfObjectDeleted(DtSimMessage* msg);
437  virtual void processAutoReorganize(DtSimMessage* msg);
440  virtual void processAggregateAs(DtSimMessage* msg);
443  virtual void processSkipTask(DtSimMessage* msg);
444 
445 
450  virtual void processSetThresholds(DtSimMessage* msg);
451 
456  virtual void processEntityAddedCallback(DtReflectedExtEntity* entity);
457  virtual void processAggregateAddedCallback(DtReflectedExtAggregate* aggregate);
458 
461  virtual void processEntityRemovedCallback(DtReflectedExtEntity* entity);
462  virtual void processAggregateRemovedCallback(DtReflectedExtAggregate* aggregate);
463 
464  virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
465  virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
466  virtual void processDesignatorChangedCallback(DtReflectedDesignator * des);
467  DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
468 
469  virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
470  virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
471  virtual void processActiveSonarChangedCallback(DtReflectedActiveSonar* des);
472  DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
473 
474  typedef std::list<DtReflectedActiveSonar*> ReflectedActiveSonars;
475  virtual ReflectedActiveSonars findActiveSonarsForHostEntity(
476  const DtVrfObject* host) const;
477 
478  virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
479  virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
480  virtual void processPropulsionNoiseChangedCallback(DtReflectedPropulsionNoise* des);
481  DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
482 
483  virtual bool hasEnabledActiveSonar(const DtVrfObject* host) const;
484 
485  virtual DtReflectedPropulsionNoise* propulsionNoiseForHost(const DtVrfObject* host) const;
486 
488  virtual void processAggregateChanged(DtReflectedExtAggregate* aggregate);
489 
490  virtual void processEnvProcessAddedCallback(
491  DtReflectedEnvironmentProcess* envProcess);
492  virtual void processEnvProcessRemovedCallback(
493  DtReflectedEnvironmentProcess* envProcess);
494  virtual bool processEnvProcessDiscoveryCriteria(
495  DtReflectedEnvironmentProcess* envProcess);
496 
499  virtual void removeObjectSubordinates(DtVrfObject* object);
500 
503  virtual void queueObjectForRemoval(const DtEntityIdentifier& key);
504  virtual void queueObjectForRemoval(const DtUUID& key);
505 
507  virtual void removeObjectsQueuedForRemoval();
508 
517  virtual void tick();
518 
520  virtual DtVrfObject* createAndInitVrfObject(
521  DtIfCreateVrfObject* creationInfo);
522 
523  virtual DtVrfObject* createAndInitVrfObject(
524  DtIfAggregateAs* aggInfo);
525 
527  virtual DtVrfObject* createAndInitVrfObject(
528  DtReflectedEntity* entity);
529 
530  virtual DtVrfObject* createAndInitVrfObject(
531  DtReflectedAggregate* aggregate,
532  int superType = DtObjectTypeAggregate);
533 
534  virtual DtVrfObject* createAndInitVrfObject(DtReflectedEnvironmentProcess* envProcess);
535 
545  virtual DtVrfObject* createAndInitVrfObject(
546  const DtObjectType& objectType,
547  bool publishLocalObject = true,
548  const DtString& objectName = DtString::nullString(),
549  const DtString& objectLabel = DtString::nullString(),
550  DtForceType forceType = DtForceOther,
551  const DtList* vertices = 0,
552  const DtTaitBryan* orientation = 0,
553  bool projection = false,
554  bool closedFigure = false,
555  const DtAppearance& appearance = DtAppearance::nullAppearance(),
556  const DtString& readerWriterName = DtString::nullString(),
557  DtReaderWriterRegistry* parentRegistry = 0,
558  bool createSubObjects = false,
559  DtVrfObjectUserInitFcn userInit = 0,
560  void* userInitData = 0,
561  bool organize = true,
562  const DtString& startingFormation = DtDefaultFormationString,
563  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
565  unsigned long requestId = 0,
566  const DtString& overlayParent = "");
567 
575  virtual DtVrfObject* createAndInitVrfObject(
576  const DtObjectType& objectType,
577  bool publishLocalObject = true,
578  const DtString& objectName = DtString::nullString(),
579  const DtString& objectLabel = DtString::nullString(),
580  DtForceType forceType = DtForceOther,
581  const DtVector& position = DtVector::zero(),
582  const DtTaitBryan* orientation = 0,
583  bool projection = false,
584  bool closedFigure = false,
585  const DtAppearance& appearance = DtAppearance::nullAppearance(),
586  const DtString& readerWriterName = DtString::nullString(),
587  DtReaderWriterRegistry* parentRegistry = 0,
588  bool createSubObjects = false,
589  DtVrfObjectUserInitFcn userInitFcn = 0,
590  void* userInitData = 0,
591  bool organize = true,
592  const DtString& startingFormation = DtDefaultFormationString,
593  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
595  unsigned long requestId = 0, const DtString& overlayParent = "");
596 
604  virtual void createSubObjectsFromParameters(DtVrfObject* parent,
605  bool publishSubobjects, unsigned long requestId, const DtString& overlayParent);
606 
613  virtual DtVrfObject* createSubObjectFromParameterEntry(
614  const DtVrfSubObjectParameterEntry& entry, const DtVector& positionOffsetFromParent,
615  const DtVrfObject& parent,
616  const DtString& formationName,
617  bool publishSubObject, unsigned long requestId = 0, const DtString& overlayParent = "");
618 
620  virtual bool readOrderOfBattleFile(const DtString & filename);
621  virtual bool writeOrderOfBattleFile(const DtString & filename);
622 
625  virtual bool writeSimulationObjectGroupOrderOfBattleFile(const DtString& filename, int flags,
626  boost::unordered_set<DtUUID>& uuidsSaved);
627 
631  virtual std::vector<DtVrfObject*> readSimulationObjectGroupOrderOfBattleFile(const DtString& filename, int flags, DtForceType force,
632  DtlObjPtr* retArgs = 0, bool* errorLoading = 0);
633  virtual std::vector<DtVrfObject*> readSimulationObjectGroupOrderOfBattleFile(int flags, DtForceType force, DtlObjPtr& args);
634 
638  virtual bool objectShouldBeSavedToOrderOfBattle(
639  const DtVrfObject* vrfObject) const;
640  virtual bool objectShouldBeSavedToSimulationObjectGroup(
641  const DtVrfObject* vrfObject) const;
642 
643  virtual DtlObjPtr getData(DtlObjPtr args,
644  const DtReaderWriter::SearchPaths& searchPaths,
645  const DtVariableBindingsList& variableBindings);
646 
649  static void tickCallback(void* args);
650 
654  virtual void addVrfObjectAboutToBeAddedCallback(
655  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
656  const DtObjectType& filter = DtObjectType::anyType(),
657  bool invertFilter = false);
658 
662  virtual void addVrfObjectAddedCallback(
663  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
664  const DtObjectType& filter = DtObjectType::anyType(),
665  bool invertFilter = false);
666 
670  virtual void addVrfObjectAboutToBeLoadedCallback(
671  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
672  const DtObjectType& filter = DtObjectType::anyType(),
673  bool invertFilter = false);
674 
675 
680  virtual void addVrfObjectAboutToBeRemovedCallback(
681  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
682  const DtObjectType& filter = DtObjectType::anyType(),
683  bool invertFilter = false);
684 
687  virtual void removeVrfObjectAboutToBeAddedCallback(
688  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
689  const DtObjectType& filter = DtObjectType::anyType(),
690  bool invertFilter = false);
691 
694  virtual void removeVrfObjectAboutToBeLoadedCallback(
695  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
696  const DtObjectType& filter = DtObjectType::anyType(),
697  bool invertFilter = false);
698 
701  virtual void removeVrfObjectAddedCallback(
702  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
703  const DtObjectType& filter = DtObjectType::anyType(),
704  bool invertFilter = false);
705 
708  virtual void removeVrfObjectAboutToBeRemovedCallback(
709  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
710  const DtObjectType& filter = DtObjectType::anyType(),
711  bool invertFilter = false);
712 
715  virtual void addObjectManagerAboutToRemoveAllCallback(
716  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
717 
720  virtual void removeObjectManagerAboutToRemoveAllCallback(
721  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
722 
724  virtual void addOrganizationManagerReadyCallback(
725  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
726 
728  virtual void removeOrganizationManagerReadyCallback(
729  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
730 
732  virtual void enableAutoReorganization();
733  virtual void disableAutoReorganization();
735  virtual bool autoReorganizeEnabled() const;
736 
738  virtual DtEntityIdentifier mapUUIDToEntityIdentifier(const DtUUID&) const;
739  virtual DtGlobalObjectDesignator mapUUIDToGlobalId(const DtUUID&) const;
740  virtual DtUUID mapGlobalIdToUUID(const DtGlobalObjectDesignator&) const;
741 
745  virtual bool objectNameExists(const DtString&) const;
746 
748  virtual DtSharedVrfObjectReference lookupTopLevelVrfObject(DtForceType forceType);
749 
751  virtual DtString nextNameWithPrefix(const DtObjectType & objectType,
752  const DtString& potentialPrefix);
753 
756  virtual DtString nextNameWithPrefix(int maxLength,
757  const DtString& potentialPrefix);
758 
760  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType);
763  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType,
764  const DtString& name);
766  virtual DtString topLevelName(DtForceType forceType);
767 
775  virtual DtString nextName(const DtObjectType& objectType);
777  virtual DtString nextUnorganizedName();
780  virtual DtString uniquifyName(const DtString& name, const DtObjectType& objectType);
781 
785  virtual unsigned int maxNameLengthForType(const DtObjectType& objectType);
786 
789  virtual DtReflectedObject* lookupReflectedObject(
790  const DtGlobalObjectDesignator& globalId) const;
791 
793  virtual void rediscoverObjects(const std::set<DtGlobalObjectDesignator>& ignore =
794  std::set<DtGlobalObjectDesignator>());
795 
798  virtual void requestUpdatesForRemoteNonVrfObjects() const;
799 
802  virtual void objectNameChanged(DtVrfObject*, const DtString& oldName,
803  const DtString& newName);
804 
807  virtual void objectUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
808 
810 
811  virtual void addObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
812  virtual void removeObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
814 
818 
819  virtual void addObjectUUIDChangedCallback(DtVrfObjectUUIDChangedCallbackFcn fcn, void* usr);
820  virtual void removeObjectUUIDChangedCallback(DtVrfObjectUUIDChangedCallbackFcn fcn, void* usr);
822 
839  virtual DtVrfObject* aggregateAs(
840  const DtObjectType& aggregateType,
841  DtForceType force,
842  const DtVector& dbPosition,
843  DtReal heading,
844  const std::vector<DtUUID>& subordinates = std::vector<DtUUID>(),
845  const DtString& aggregateName = DtString::nullString());
846 
851  virtual void setSimulationDateTimeBasedOnLocation(const DtVector& geocentricLocation, int timeOfDay);
852 
856  virtual bool addSubordinatesToAggregate(DtVrfObject* object,
857  const std::vector<DtUUID>& subordinates, DtAggregateState desiredState = DtFullyDisaggregated);
858 
864  static void addSubordinatesToAggregateCompleteCallback(void* usr);
865 
866  virtual DtOrganizationManager* organizationManager();
867  virtual const DtOrganizationManager* organizationManager() const;
868 
871  virtual DtDiGuyCharacterDataManager * diGuyCharacterManager();
872  virtual const DtDiGuyCharacterDataManager * diGuyCharacterManager() const;
873 
875  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
876 
878  virtual unsigned objectCount() const;
879 
882  virtual DtSharedVrfObjectReference lookupVrfObjectByEntityIdentifier(const DtEntityIdentifier& key) const;
883 
886  virtual DtSharedVrfObjectReference lookupVrfObjectByGlobalId(const DtGlobalObjectDesignator& globalId) const;
887 
893  virtual DtSharedVrfObjectReference lookupVrfObjectByUUID(const DtUUID&) const;
894 
897  virtual bool uuidExists(const DtUUID&) const;
898 
901  virtual bool addNameAlias(const DtString& aliasName, DtVrfObject* object);
902 
903  virtual void removeNameAlias(const DtString& alias);
904 
909  virtual DtSharedVrfObjectReference lookupVrfObjectByMarkingText(const DtString&) const;
910 
913  virtual bool markingTextExists(const DtString&) const;
914 
916  virtual const DtSimulationAddress& simulationAddress() const;
917 
923  const DtSimObjectIterator& iterator() const;
924 
926  virtual bool createSimObjectList();
927 
930  virtual DtHashlist* hashlist() const;
931 
935  virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
936  virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
937 
942  static void entityAddedCallback(DtReflectedExtEntity* entity, void* userData);
943 
948  static void entityRemovedCallback(DtReflectedExtEntity* entity,
949  void* userData);
950 
955  static void aggregateAddedCallback(DtReflectedExtAggregate* entity,
956  void* userData);
957 
962  static void aggregateRemovedCallback(DtReflectedExtAggregate* entity,
963  void* userData);
964 
969  static void entityChangedCallback(DtReflectedExtEntity* entity,
970  void* userData);
971 
976  static void aggregateChangedCallback(DtReflectedExtAggregate* aggregate,
977  void* userData);
978 
980  virtual void processEntityChanged(DtReflectedExtEntity* entity);
981 
987  static bool entityDiscoveryCriteriaCallback(DtReflectedObject* entity,
988  void* userData);
989 
995  static bool aggregateDiscoveryCriteriaCallback(DtReflectedObject* aggregate,
996  void* userData);
997 
1003  virtual bool processEntityDiscoveryCriteria(
1004  DtReflectedEntity* entity);
1005 
1011  virtual bool processAggregateDiscoveryCriteria(
1012  DtReflectedAggregate* aggregate);
1013 
1016  virtual DtReflectedDesignator * lookupLasedTargetByGlobalId(const DtGlobalObjectDesignator&
1017  tgtGlobalId);
1018 
1022  virtual DtReflectedDesignator* lookupLasedTargetByDesignatorCode(const int code);
1023 
1027  virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
1028 
1029  virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
1030  virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
1031 
1032  DtReflectedDesignatorList* reflectedDesignatorList() const;
1033 
1034  DtReflectedActiveSonarList* reflectedActiveSonarList() const;
1035  DtReflectedPropulsionNoiseList* reflectedPropulsionNoiseList() const;
1036 
1038  virtual DtVrfParameterDb* objectParametersDB() const;
1039 
1042  virtual void addSimObjectAboutToBeAddedCallback(
1044  virtual void addSimObjectAddedCallback(
1046  virtual void addSimObjectAboutToBeRemovedCallback(
1048  virtual void addSimObjectAboutToBeLoadedCallback(
1050 
1054  virtual void addSimObjectAboutToBeAddedCallback(
1055  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1056  const DtObjectType& filter = DtObjectType::anyType(),
1057  bool invertFilter = false);
1058 
1062  virtual void addSimObjectAddedCallback(
1063  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1064  const DtObjectType& filter = DtObjectType::anyType(),
1065  bool invertFilter = false);
1066 
1070  virtual void addSimObjectAboutToBeRemovedCallback(
1071  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1072  const DtObjectType& filter = DtObjectType::anyType(),
1073  bool invertFilter = false);
1074 
1078  virtual void addSimObjectAboutToBeLoadedCallback(
1079  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1080  const DtObjectType& filter = DtObjectType::anyType(),
1081  bool invertFilter = false);
1082 
1085  virtual void removeSimObjectAboutToBeAddedCallback(
1086  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1087  const DtObjectType& filter = DtObjectType::anyType(),
1088  bool invertFilter = false);
1089 
1090  virtual void removeSimObjectAboutToBeRemovedCallback(
1091  const DtSimObjectListActivityCallbackInfo& cbInfo);
1092 
1095  virtual void removeSimObjectAddedCallback(
1096  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1097  const DtObjectType& filter = DtObjectType::anyType(),
1098  bool invertFilter = false);
1099 
1102  virtual void removeSimObjectAboutToBeLoadedCallback(
1103  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1104  const DtObjectType& filter = DtObjectType::anyType(),
1105  bool invertFilter = false);
1106 
1109  virtual void removeSimObjectAboutToBeAddedCallback(
1110  const DtSimObjectListActivityCallbackInfo& cbInfo);
1111  virtual void removeSimObjectAddedCallback(
1112  const DtSimObjectListActivityCallbackInfo& cbInfo);
1113  virtual void removeSimObjectAboutToBeLoadedCallback(
1114  const DtSimObjectListActivityCallbackInfo& cbInfo);
1115 
1118  virtual void removeSimObjectAboutToBeRemovedCallback(
1119  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1120  const DtObjectType& filter = DtObjectType::anyType(),
1121  bool invertFilter = false);
1122 
1126  virtual void invokeSimObjectAboutToBeAddedCallbacks(
1127  DtVrfObject* simObject) const;
1128 
1132  virtual void invokeSimObjectAddedCallbacks(
1133  DtVrfObject* simObject) const;
1134 
1138  virtual void invokeSimObjectAboutToBeRemovedCallbacks(
1139  DtVrfObject* simObject) const;
1140 
1144  virtual void invokeSimObjectAboutToBeLoadedCallbacks(
1145  DtVrfObject* simObject) const;
1146 
1148  virtual DtReflectedExtEntityList* reflectedEntityList() const;
1149 
1151  virtual DtReflectedExtAggregateList* reflectedAggregateList() const;
1152 
1156  virtual void setSimObjectType(const DtString& type);
1157  virtual const DtString& simObjectType() const;
1159 
1162  virtual void addUUIDMappingForObject(DtVrfObject* vrfObject);
1163 
1165  virtual void removeUUIDMappingForObject(DtVrfObject* vrfObject);
1166 
1168  virtual DtEntityIdentifier nextId(DtVrfObject* o = NULL);
1169 
1174  virtual DtString generateUniqueName(int maxLength, const DtString&
1175  root = "Object") const;
1176 
1178  virtual void setRollUpRules(const DtAssembliesReaderWriter::RwRootNode&);
1179 
1181  virtual const DtAssembliesReaderWriter::RwRootNode& rollUpRules() const;
1182 
1184  virtual void setActivities(const DtRwActivities&);
1185 
1187  virtual const DtRwActivities& activities() const;
1188 
1191  virtual bool isLocal(const DtBaseEntityStateRepository& stateRep);
1192 
1196  static int aggregateSuperType(DtAggregateStateRepository* aggregate);
1197 
1202  virtual void objectsEmbarkedOn(DtVrfObjectStateRepository* vrfObjSR, std::vector<DtSharedVrfObjectReference>& list,
1203  bool includePseudoAggregates = true) const;
1204 
1209  static void designatorAddedCallback(DtReflectedDesignator * des,
1210  void * userData);
1211 
1216  static void designatorRemovedCallback(DtReflectedDesignator * des,
1217  void * userData);
1218 
1223  static void designatorChangedCallback(DtReflectedDesignator * des,
1224  void * userData);
1225 
1231  static DtBoolean designatorDiscoveryCriteriaCallback(DtReflectedObject * des,
1232  void * userData);
1233 
1234  static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
1235  void* userData);
1236  static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
1237  void* userData);
1238  static void activeSonarChangedCallback(DtReflectedActiveSonar* activeSonar,
1239  void* userData);
1240  static DtBoolean activeSonarDiscoveryCriteriaCallback(
1241  DtReflectedObject* activeSonar, void* userData);
1242 
1243  static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
1244  void* userData);
1245  static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
1246  void* userData);
1247  static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
1248  void* userData);
1249  static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
1250  DtReflectedObject* propNoise, void* userData);
1251 
1254  virtual bool canSimulate() const;
1255 
1257  virtual void printReflectedObjectCounts() const;
1258 
1259 protected:
1261  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1262  virtual void invokeOrganizationManagerReadyCallbacks(const DtOrganizationManagerReadyCallbackInfo&);
1263 
1264 protected:
1267  virtual void rediscoverNonVRFEntities();
1268 
1272  virtual void remove(DtVrfObject* simObject);
1273  virtual void remove(DtSharedVrfObjectReference simObject);
1274  virtual DtVrfObject* remove(const DtEntityIdentifier& key);
1275 
1278  virtual void invokeObjectManagerAboutToRemoveAllCallbacks() const;
1279 
1282  virtual void onQueueObjectForRemoval(DtVrfObject* vrfObject);
1283 
1284  virtual const Coordinate_System* coordinateSystem() const;
1285  virtual Coordinate_System* coordinateSystem();
1286 
1289  virtual void modifyInterfaceContentForNewObject(DtSimInterfaceContent*, DtVrfObject*, bool& isLocal) const;
1290 
1293  virtual std::list<DtVector> calculateFormationOffsetsBasedOnFootprints(const DtList&) const;
1294 
1296  virtual std::vector<Dt3dBoundingVolume> boundingVolumesOfChildren(const DtList& subObjects,
1297  int& totalLeafNodes) const;
1298 
1299 protected:
1301  virtual DtObjectGeometricModelsManager* createObjectModelsManager() const;
1302 
1304  virtual DtVrfEntityIdentifierFactory* createVrfEntityIdentifierFactory();
1305 
1307  virtual DtVrfObjectPlanAdministrator* createPlanAdministrator();
1308 
1309  virtual void finalizeObjectRead(DtVrfObject*);
1310 
1311  virtual DtEntityIdentifier findEntityIdentifier(DtlObjPtr);
1312 
1313 public:
1314  DtObjectGeometricModelsManager* objectModelsManager() const;
1315  DtVrfEntityIdentifierFactory* vrfEntityIdentifierFactory() const;
1316 
1317  virtual DtVrfObjectPlanAdministrator* planAdministrator();
1318 
1319  virtual DtSimInternalCommunicationManager* simInternalCommunicationManager();
1320 
1321 protected:
1323  virtual DtSimInternalCommunicationManager* createSimInternalCommunicationManager(
1324  DtSimManager* simMgr) const;
1325 
1326 protected:
1327 
1329  typedef std::pair<DtVrfObject*, DtVrfSimulationObjectGroupGeometry*> PendingObjectInformation;
1330  typedef std::vector<PendingObjectInformation> PendingObjectsInformation;
1331  typedef std::vector<PendingObjectsInformation> ObjectsAwaitingDiscovery;
1332 
1335  virtual bool addObjectsReadyForSimulation(PendingObjectsInformation&);
1336 
1340  static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr);
1341  static void modifyVrfOverlayCallback(DtSimMessage* msg, void* usr);
1342  static void autoReorganizeCallback(DtSimMessage* msg, void* usr);
1343  static void skipTaskCallback(DtSimMessage* msg, void* usr);
1344  static void setThresholdsCallback(DtSimMessage* msg, void* usr);
1345 
1346 #if DT_SINGLE_STATE_UPDATE_MESSAGE
1347  static void vrfObjectStateUpdateCallback(DtSimMessage* msg, void* usr);
1348 #endif
1349 
1357  static void createVrfObjectCallback(DtSimMessage* msg, void* usr);
1358  static void deleteVrfObjectCallback(DtSimMessage* msg, void* usr);
1359  static void deleteVrfObjectByIdCallback(DtSimMessage* msg, void* usr);
1360  static void vrfObjectDeletedCallback(DtSimMessage* msg, void* usr);
1361  static void orderOfBattleOpCallback(DtSimMessage* msg, void* usr);
1362  static void aggregateAsCallback(DtSimMessage* msg, void* usr);
1363 
1365  static void extendedLabelsOperationCallback(DtSimMessage* msg, void* usr);
1366  virtual void processExtendedLabelsOperation(DtSimMessage*);
1367 
1369  static void requestActivitiesCallback(DtSimMessage* msg, void* usr);
1370  virtual void processRequestActivities(DtSimMessage*);
1371 
1373  static void requestJoystickControlsCallback(DtSimMessage* msg, void* usr);
1374  virtual void processRequestJoystickControls(DtSimMessage*);
1375 
1378  virtual bool acceptRemoteEnvironmental(const DtEntityType& et) const;
1379 
1384  static void createVrfObjectPostDrainCallback(void* usr);
1385  static void deleteVrfObjectPostDrainCallback(void* usr);
1386  static void deleteVrfObjectByIdPostDrainCallback(void* usr);
1387  static void vrfObjectDeletedPostDrainCallback(void* usr);
1388  static void aggregateAsPostDrainCallback(void* usr);
1389 
1390  static void envProcessAddedCallback(
1391  DtReflectedEnvironmentProcess* envProcess, void* userData);
1392  static void envProcessRemovedCallback(
1393  DtReflectedEnvironmentProcess* envProcess, void* userData);
1394  static bool envProcessDiscoveryCriteria(
1395  DtReflectedObject* envProcess, void* userData);
1396 
1397  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo& info, void* usr);
1398 
1399 protected:
1400 
1403 
1406 
1409 
1415  static void postInitFromParamsCallback(DtVrfObject* vrfObject, void* usr);
1416 
1419  virtual DtCreateQueueEntry* createQueueEntryCreator(DtIfCreateVrfObject msg);
1420 
1423  virtual DtModifyQueueEntry* modifyQueueEntryCreator(DtIfModifyVrfObject msg);
1424 
1425 protected:
1428 
1430  DtHashlist* mySimObjectList;
1431 
1434 
1437 
1440 
1441  DtReflectedActiveSonarList* myRemoteActiveSonarList;
1442  DtReflectedPropulsionNoiseList* myRemotePropulsionNoiseList;
1443 
1446 
1449 
1454 
1459 
1464 
1468  typedef std::list<DtSimObjectListActivityCallbackInfo*> ToBeRemovedList;
1470 
1471  mutable std::set<DtSimObjectListActivityCallbackInfo*> myRemovalCallbacksRemoved;
1472 
1475 
1480 
1481  DtExerciseConn* myExerciseConn;
1482 
1485 
1487 
1492 
1494 
1497  std::set<DtUUID> myObjectsToRemoveQueue;
1498 
1501  typedef DtBoost::shared_ptr<DtCreateQueueEntry> DtCreateQueueEntryPtr;
1502  typedef std::list<DtCreateQueueEntryPtr> DtVrfObjectCreateQueue;
1504 
1507  typedef DtBoost::shared_ptr<DtModifyQueueEntry> DtModifyQueueEntryPtr;
1508  typedef std::list<DtModifyQueueEntryPtr> DtVrfObjectModifyQueue;
1510 
1513 
1515 
1517 
1518  typedef boost::unordered_map<DtString, DtSharedVrfObjectReference> GlobalIdToObjectMap;
1520 
1523 
1525 
1527 
1529 
1531 
1533 
1535 
1538 
1541 
1544 
1546 
1547  DtFilename myDataDir;
1548  DtFilename myUserDataDir;
1549 
1551 
1553 
1556 
1560 
1563 
1564  typedef boost::unordered_map<DtUUID, DtSharedVrfObjectReference> UUIDToObjectMap;
1566 
1567  typedef boost::unordered_map<DtString, DtSharedVrfObjectReference> NameToObjectMap;
1570 
1571  typedef boost::unordered_map<DtVrfObject*, DtSharedVrfObjectReference> ObjectToObjectMap;
1573 
1575 
1576  //Incremented each time a callback list is invoked.
1577  //Decremented when done invoking callbacks.
1578  //Unsigned because invoke can be called from within
1579  //a callback.
1585  //@]
1586 
1587  std::vector<DtVrfObject*> myJustAdded;
1588 
1589  std::map<int, DtlObjPtr> mySortedByEntityId;
1594 
1595 private:
1596 
1597  std::vector<DtVrfObjectManagerCallbackInfo> myAboutToRemoveAllCallbackList;
1598 };
1599 
1601 {
1603 }
1604 
1606 {
1608 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)