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"
25 #include "vrfutil/rwActivities.h"
27 
29 #include <vlpi/appearance.h>
30 #include <vlutil/vlFilename.h>
31 #include <vlutil/vlList.h>
32 #include <vlutil/vlHashlist.h>
33 #include <vlutil/vlConfig.h>
34 #include <vlutil/vlSmartPointers.h>
36 
38 #include <vector>
39 #include <list>
40 #include <set>
41 
42 #include <boost/unordered_map.hpp>
43 #include <boost/unordered_set.hpp>
44 
46 #define DT_SINGLE_STATE_UPDATE_MESSAGE 0
47 
48 class DtExerciseConn;
49 class DtReflectedObject;
50 class DtReflectedAggregate;
55 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 
91 
93 typedef bool (*DtSimObjectUserInitFcn)(DtVrfObject* object, void* usr);
94 
98  void* usr);
99 
101 typedef bool (*DtVrfObjectUserInitFcn)(DtVrfObject* vrfObject, void* usr);
102 
105 typedef void (*DtVrfObjectManagerCallbackFcn)(const DtVrfObjectManager& objectManager,
106  void* usr);
107 
111 const int DtSimMaxForceTypes = 256;
112 
115 {
117  void* myUserData;
118 };
119 
122 {
128 
131  unsigned int importFlags;
135 };
136 
139 {
143 };
144 
147 {
151 };
152 
155 {
157  DtEntityIdentifier* myEntityIdentifier;
158 };
159 
164 
166 typedef enum
167 {
172 
185 {
186 public:
188 
192  typedef enum
193  {
194  DtUseParameterDatabaseAggregateState = 0,
196  DtCreateDisaggregatedEntity
197  } DtAggregateCreationMode;
198 
199 public:
200 
202  DtVrfObjectManager(DtSimManager* simManager, int entityAdvisory = 100);
203 
209  virtual ~DtVrfObjectManager();
212 
214  virtual void clearRemoteComponentAttachmentSystem();
215 
221  virtual bool reuseEntityIdentifiersOnScenarioLoad() const;
222  virtual void setReuseEntityIdentifiersOnScenarioLoad(bool);
223 
226  virtual DtEntityIdentifier nextEntityIdentifier(DtVrfObject*, const DtEntityIdentifier&);
227  virtual void addVrfObjectAboutToBePublishedCallback(
228  DtVrfObjectAboutToBePublishedCallbackFcn fcn, void* usrData);
229  virtual void removeVrfObjectAboutToBePublishedCallback(
230  DtVrfObjectAboutToBePublishedCallbackFcn fcn, void* usrData);
231 
234  virtual void createRemoteComponentAttachmentManager();
235 
237  virtual bool isRemoteComponentAttachment(const DtUUID&) const;
238 
240  virtual bool initializeRemoteComponentAttachmentSystem(const DtFilename& fromFile);
241 
243  DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager();
244  const DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager() const;
246 
249  virtual bool create();
250 
253  virtual bool init();
254 
256  virtual void createDIGuyCharacterManager(const DtFilename & diGuyDataFile,
257  const DtFilename & diGuyAnimationsFile);
258 
268  virtual bool add(DtVrfObject* simObject);
269 
271  virtual void completeObjectAddition(DtVrfObject* simObject);
272 
274  virtual bool loadingScenarioInformation() const;
275 
276 private:
279  using DtRwList::add;
280  using DtRwList::remove;
281 
282 public:
284  virtual void setParameterDatabase(DtVrfParameterDb* parameterDatabase);
285  virtual DtVrfParameterDb* parameterDatabase();
286 
288  virtual DtManagedObjectListConstPtr getList(const DtVrfObjectPredicate& predicate,
289  bool reevaluateFlag = false, DtTime evaluationPeriod = 0);
290 
292  virtual void setImportingScenario(bool);
293  virtual bool importingScenario() const;
294 
296  virtual void setImportScenarioData(const DtImportScenarioData&);
297  virtual const DtImportScenarioData& importScenarioData() const;
298 
299  virtual const DtVrfObjectFilterIterator& vrfIterator(
300  const DtObjectType& filter = DtObjectType::anyType(),
301  bool invertFilter = false) const;
302 
303  virtual const DtVrfObjectFilterIterator& vrfIterator(
304  const DtVrfObjectPredicate& predicate) const;
305 
308  virtual const DtVrfObjectFilterIterator& vrfIterator(DtFilterFcn filter,
309  bool invertFilter = false, void* usrData = 0)const;
310 
313  virtual void removeAndDelete(const DtUUID& objectName);
314  virtual void removeAndDelete(DtSharedVrfObjectReference simObject);
315  virtual void removeAndDelete(const DtEntityIdentifier& key);
316  virtual void removeAndDelete(DtVrfObject* object);
317 
319  std::set<DtGlobalObjectDesignator> remoteObjectGlobalIds(bool onlyVrfSimulated = true) const;
320 
322  virtual void removeAndDeleteAllLocals();
323 
326  virtual void removeAndDeleteAll();
327 
332  virtual void setExerciseConnection(DtExerciseConn* connection);
333  virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
334 
337  virtual void setPublishZeroVelocityWhenPaused(bool);
338  virtual bool publishZeroVelocityWhenPaused() const;
339 
341  virtual void setDataDir(const DtFilename&);
342  virtual const DtFilename& dataDir() const;
343 
345  virtual void setUserDataDir(const DtFilename&);
346  virtual const DtFilename& userDataDir() const;
347 
351  virtual void setSetDeadReckoningAlgorithmToStaticOnPause(bool);
352  virtual bool setDeadReckoningAlgorithmToStaticOnPause() const;
353 
355  virtual void setTaskVisualizationPublicationMode(DtTaskVisualizationPublicationMode mode);
356  virtual DtTaskVisualizationPublicationMode taskVisualizationPublicationMode() const;
357 
360  virtual void setUseDrawControlForTaskVisualizations(bool);
361  virtual bool useDrawControlForTaskVisualizations() const;
362 
364  virtual DtReflectedControlObjectList* reflectedEnvironmentProcessList() const;
365 
368  virtual DtReflectedControlObjectList* createReflectedControlObjectList(DtExerciseConn* exConn);
369 
376  virtual void registerInterfaceCallbacks();
377 
379  virtual const DtSimManager* simManager() const;
381  virtual DtSimManager* simManager();
382 
392  virtual void processCreateVrfObject(DtSimMessage* msg);
393 
400  virtual void processCreateVrfObject(DtIfCreateVrfObject ifCreateVrfObject);
401 
409  virtual void processModifyVrfObject(DtSimMessage* msg);
410 
417  virtual void processModifyVrfObject(DtIfModifyVrfObject modObj);
418 
421  virtual void processModifyVrfOverlay(DtSimMessage* msg);
424  virtual void processDeleteVrfObject(DtSimMessage* msg);
427  virtual void processDeleteVrfObjectById(DtSimMessage* msg);
430  virtual void processVrfObjectDeleted(DtSimMessage* msg);
433  virtual void processAutoReorganize(DtSimMessage* msg);
436  virtual void processAggregateAs(DtSimMessage* msg);
439  virtual void processSkipTask(DtSimMessage* msg);
440 
441 
446  virtual void processSetThresholds(DtSimMessage* msg);
447 
452  virtual void processEntityAddedCallback(DtReflectedExtEntity* entity);
453  virtual void processAggregateAddedCallback(DtReflectedExtAggregate* aggregate);
454 
457  virtual void processEntityRemovedCallback(DtReflectedExtEntity* entity);
458  virtual void processAggregateRemovedCallback(DtReflectedExtAggregate* aggregate);
459 
460  virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
461  virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
462  virtual void processDesignatorChangedCallback(DtReflectedDesignator * des);
463  DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
464 
465  virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
466  virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
467  virtual void processActiveSonarChangedCallback(DtReflectedActiveSonar* des);
468  DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
469 
470  typedef std::list<DtReflectedActiveSonar*> ReflectedActiveSonars;
471  virtual ReflectedActiveSonars findActiveSonarsForHostEntity(
472  const DtVrfObject* host) const;
473 
474  virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
475  virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
476  virtual void processPropulsionNoiseChangedCallback(DtReflectedPropulsionNoise* des);
477  DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
478 
479  virtual bool hasEnabledActiveSonar(const DtVrfObject* host) const;
480 
481  virtual DtReflectedPropulsionNoise* propulsionNoiseForHost(const DtVrfObject* host) const;
482 
484  virtual void processAggregateChanged(DtReflectedExtAggregate* aggregate);
485 
486  virtual void processEnvProcessAddedCallback(
487  DtReflectedEnvironmentProcess* envProcess);
488  virtual void processEnvProcessRemovedCallback(
489  DtReflectedEnvironmentProcess* envProcess);
490  virtual bool processEnvProcessDiscoveryCriteria(
491  DtReflectedEnvironmentProcess* envProcess);
492 
495  virtual void removeObjectSubordinates(DtVrfObject* object);
496 
499  virtual void queueObjectForRemoval(const DtEntityIdentifier& key);
500  virtual void queueObjectForRemoval(const DtUUID& key);
501 
503  virtual void removeObjectsQueuedForRemoval();
504 
513  virtual void tick();
514 
516  virtual DtVrfObject* createAndInitVrfObject(
517  DtIfCreateVrfObject* creationInfo);
518 
519  virtual DtVrfObject* createAndInitVrfObject(
520  DtIfAggregateAs* aggInfo);
521 
523  virtual DtVrfObject* createAndInitVrfObject(
524  DtReflectedEntity* entity);
525 
526  virtual DtVrfObject* createAndInitVrfObject(
527  DtReflectedAggregate* aggregate,
528  int superType = DtObjectTypeAggregate);
529 
530  virtual DtVrfObject* createAndInitVrfObject(DtReflectedEnvironmentProcess* envProcess);
531 
541  virtual DtVrfObject* createAndInitVrfObject(
542  const DtObjectType& objectType,
543  bool publishLocalObject = true,
544  const DtString& objectName = DtString::nullString(),
545  const DtString& objectLabel = DtString::nullString(),
546  DtForceType forceType = DtForceOther,
547  const DtList* vertices = 0,
548  const DtTaitBryan* orientation = 0,
549  bool projection = false,
550  bool closedFigure = false,
551  const DtAppearance& appearance = DtAppearance::nullAppearance(),
552  const DtString& readerWriterName = DtString::nullString(),
553  DtReaderWriterRegistry* parentRegistry = 0,
554  bool createSubObjects = false,
555  DtVrfObjectUserInitFcn userInit = 0,
556  void* userInitData = 0,
557  bool organize = true,
558  const DtString& startingFormation = DtDefaultFormationString,
559  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
561  unsigned long requestId = 0,
562  const DtString& overlayParent = "");
563 
571  virtual DtVrfObject* createAndInitVrfObject(
572  const DtObjectType& objectType,
573  bool publishLocalObject = true,
574  const DtString& objectName = DtString::nullString(),
575  const DtString& objectLabel = DtString::nullString(),
576  DtForceType forceType = DtForceOther,
577  const DtVector& position = DtVector::zero(),
578  const DtTaitBryan* orientation = 0,
579  bool projection = false,
580  bool closedFigure = false,
581  const DtAppearance& appearance = DtAppearance::nullAppearance(),
582  const DtString& readerWriterName = DtString::nullString(),
583  DtReaderWriterRegistry* parentRegistry = 0,
584  bool createSubObjects = false,
585  DtVrfObjectUserInitFcn userInitFcn = 0,
586  void* userInitData = 0,
587  bool organize = true,
588  const DtString& startingFormation = DtDefaultFormationString,
589  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
591  unsigned long requestId = 0, const DtString& overlayParent = "");
592 
600  virtual void createSubObjectsFromParameters(DtVrfObject* parent,
601  bool publishSubobjects, unsigned long requestId, const DtString& overlayParent);
602 
609  virtual DtVrfObject* createSubObjectFromParameterEntry(
610  const DtVrfSubObjectParameterEntry& entry, const DtVector& positionOffsetFromParent,
611  const DtVrfObject& parent,
612  const DtString& formationName,
613  bool publishSubObject, unsigned long requestId = 0, const DtString& overlayParent = "");
614 
616  virtual bool readOrderOfBattleFile(const DtFilename & filename);
617  virtual bool readOrderOfBattleFile(const std::vector<std::string*>& oob);
618 
620  virtual bool writeOrderOfBattleFile(const DtString & filename);
622  virtual bool writeOrderOfBattleFile(std::string& stream);
623  virtual bool writeOrderOfBattleFile(std::vector<std::string*>& vecOfStreams);
624 
627  virtual bool writeSimulationObjectGroupOrderOfBattleFile(const DtString& filename, int flags,
628  boost::unordered_set<DtUUID>& uuidsSaved);
629 
633  virtual std::vector<DtVrfObject*> readSimulationObjectGroupOrderOfBattleFile(const DtString& filename, int flags, DtForceType force,
634  DtlObjPtr* retArgs = 0, bool* errorLoading = 0);
635  virtual std::vector<DtVrfObject*> readSimulationObjectGroupOrderOfBattleFile(int flags, DtForceType force, DtlObjPtr& args);
636 
640  virtual bool objectShouldBeSavedToOrderOfBattle(
641  const DtVrfObject* vrfObject) const;
642  virtual bool objectShouldBeSavedToSimulationObjectGroup(
643  const DtVrfObject* vrfObject) const;
644 
645  virtual DtVrfObject* createObjectFromMemoryBuffer(const std::string& buffer);
646 
647  virtual DtlObjPtr getData(DtlObjPtr args,
648  const DtReaderWriter::SearchPaths& searchPaths,
649  const DtVariableBindingsList& variableBindings);
650 
653  static void tickCallback(void* args);
654 
658  virtual void addVrfObjectAboutToBeAddedCallback(
659  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
660  const DtObjectType& filter = DtObjectType::anyType(),
661  bool invertFilter = false);
662 
666  virtual void addVrfObjectAddedCallback(
667  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
668  const DtObjectType& filter = DtObjectType::anyType(),
669  bool invertFilter = false);
670 
674  virtual void addVrfObjectAboutToBeLoadedCallback(
675  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
676  const DtObjectType& filter = DtObjectType::anyType(),
677  bool invertFilter = false);
678 
679 
684  virtual void addVrfObjectAboutToBeRemovedCallback(
685  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
686  const DtObjectType& filter = DtObjectType::anyType(),
687  bool invertFilter = false);
688 
691  virtual void removeVrfObjectAboutToBeAddedCallback(
692  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
693  const DtObjectType& filter = DtObjectType::anyType(),
694  bool invertFilter = false);
695 
698  virtual void removeVrfObjectAboutToBeLoadedCallback(
699  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
700  const DtObjectType& filter = DtObjectType::anyType(),
701  bool invertFilter = false);
702 
705  virtual void removeVrfObjectAddedCallback(
706  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
707  const DtObjectType& filter = DtObjectType::anyType(),
708  bool invertFilter = false);
709 
712  virtual void removeVrfObjectAboutToBeRemovedCallback(
713  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
714  const DtObjectType& filter = DtObjectType::anyType(),
715  bool invertFilter = false);
716 
719  virtual void addObjectManagerAboutToRemoveAllCallback(
720  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
721 
724  virtual void removeObjectManagerAboutToRemoveAllCallback(
725  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
726 
728  virtual void addOrganizationManagerReadyCallback(
729  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
730 
732  virtual void removeOrganizationManagerReadyCallback(
733  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
734 
736  virtual void enableAutoReorganization();
737  virtual void disableAutoReorganization();
739  virtual bool autoReorganizeEnabled() const;
740 
742  virtual DtEntityIdentifier mapUUIDToEntityIdentifier(const DtUUID&) const;
743  virtual DtGlobalObjectDesignator mapUUIDToGlobalId(const DtUUID&) const;
744  virtual DtUUID mapGlobalIdToUUID(const DtGlobalObjectDesignator&) const;
745 
749  virtual bool objectNameExists(const DtString&) const;
750 
752  virtual DtSharedVrfObjectReference lookupTopLevelVrfObject(DtForceType forceType);
753 
755  virtual DtString nextNameWithPrefix(const DtObjectType & objectType,
756  const DtString& potentialPrefix);
757 
760  virtual DtString nextNameWithPrefix(int maxLength,
761  const DtString& potentialPrefix);
762 
764  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType);
767  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType,
768  const DtString& name);
770  virtual DtString topLevelName(DtForceType forceType);
771 
779  virtual DtString nextName(const DtObjectType& objectType);
781  virtual DtString nextUnorganizedName();
784  virtual DtString uniquifyName(const DtString& name, const DtObjectType& objectType);
785 
789  virtual unsigned int maxNameLengthForType(const DtObjectType& objectType);
790 
793  virtual DtReflectedObject* lookupReflectedObject(
794  const DtGlobalObjectDesignator& globalId) const;
795 
797  virtual void rediscoverObjects(const std::set<DtGlobalObjectDesignator>& ignore =
798  std::set<DtGlobalObjectDesignator>());
799 
802  virtual void requestUpdatesForRemoteNonVrfObjects() const;
803 
806  virtual void objectNameChanged(DtVrfObject*, const DtString& oldName,
807  const DtString& newName);
808 
811  virtual void objectUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
812 
814 
815  virtual void addObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
816  virtual void removeObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
818 
822 
823  virtual void addObjectUUIDChangedCallback(DtVrfObjectUUIDChangedCallbackFcn fcn, void* usr);
824  virtual void removeObjectUUIDChangedCallback(DtVrfObjectUUIDChangedCallbackFcn fcn, void* usr);
826 
843  virtual DtVrfObject* aggregateAs(
844  const DtObjectType& aggregateType,
845  DtForceType force,
846  const DtVector& dbPosition,
847  DtReal heading,
848  const std::vector<DtUUID>& subordinates = std::vector<DtUUID>(),
849  const DtString& aggregateName = DtString::nullString());
850 
855  virtual void setSimulationDateTimeBasedOnLocation(const DtVector& geocentricLocation, int timeOfDay);
856 
860  virtual bool addSubordinatesToAggregate(DtVrfObject* object,
861  const std::vector<DtUUID>& subordinates, DtAggregateState desiredState = DtFullyDisaggregated);
862 
868  static void addSubordinatesToAggregateCompleteCallback(void* usr);
869 
870  virtual DtOrganizationManager* organizationManager();
871  virtual const DtOrganizationManager* organizationManager() const;
872 
875  virtual DtDiGuyCharacterDataManager * diGuyCharacterManager();
876  virtual const DtDiGuyCharacterDataManager * diGuyCharacterManager() const;
877 
879  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
880 
882  virtual unsigned objectCount() const;
883 
886  virtual DtSharedVrfObjectReference lookupVrfObjectByEntityIdentifier(const DtEntityIdentifier& key) const;
887 
890  virtual DtSharedVrfObjectReference lookupVrfObjectByGlobalId(const DtGlobalObjectDesignator& globalId) const;
891 
897  virtual DtSharedVrfObjectReference lookupVrfObjectByUUID(const DtUUID&) const;
898 
901  virtual bool uuidExists(const DtUUID&) const;
902 
905  virtual bool addNameAlias(const DtString& aliasName, DtVrfObject* object);
906 
907  virtual void removeNameAlias(const DtString& alias);
908 
913  virtual DtSharedVrfObjectReference lookupVrfObjectByMarkingText(const DtString&) const;
914 
917  virtual bool markingTextExists(const DtString&) const;
918 
920  virtual const DtSimulationAddress& simulationAddress() const;
921 
927  const DtSimObjectIterator& iterator() const;
928 
930  virtual bool createSimObjectList();
931 
934  virtual DtHashlist* hashlist() const;
935 
939  virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
940  virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
941 
946  static void entityAddedCallback(DtReflectedExtEntity* entity, void* userData);
947 
952  static void entityRemovedCallback(DtReflectedExtEntity* entity,
953  void* userData);
954 
959  static void aggregateAddedCallback(DtReflectedExtAggregate* entity,
960  void* userData);
961 
966  static void aggregateRemovedCallback(DtReflectedExtAggregate* entity,
967  void* userData);
968 
973  static void entityChangedCallback(DtReflectedExtEntity* entity,
974  void* userData);
975 
980  static void aggregateChangedCallback(DtReflectedExtAggregate* aggregate,
981  void* userData);
982 
984  virtual void processEntityChanged(DtReflectedExtEntity* entity);
985 
991  static bool entityDiscoveryCriteriaCallback(DtReflectedObject* entity,
992  void* userData);
993 
999  static bool aggregateDiscoveryCriteriaCallback(DtReflectedObject* aggregate,
1000  void* userData);
1001 
1007  virtual bool processEntityDiscoveryCriteria(
1008  DtReflectedEntity* entity);
1009 
1015  virtual bool processAggregateDiscoveryCriteria(
1016  DtReflectedAggregate* aggregate);
1017 
1020  virtual DtReflectedDesignator * lookupLasedTargetByGlobalId(const DtGlobalObjectDesignator&
1021  tgtGlobalId);
1022 
1026  virtual DtReflectedDesignator* lookupLasedTargetByDesignatorCode(const int code);
1027 
1031  virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
1032 
1033  virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
1034  virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
1035 
1036  DtReflectedDesignatorList* reflectedDesignatorList() const;
1037 
1038  DtReflectedActiveSonarList* reflectedActiveSonarList() const;
1039  DtReflectedPropulsionNoiseList* reflectedPropulsionNoiseList() const;
1040 
1042  virtual DtVrfParameterDb* objectParametersDB() const;
1043 
1046  virtual void addSimObjectAboutToBeAddedCallback(
1048  virtual void addSimObjectAddedCallback(
1050  virtual void addSimObjectAboutToBeRemovedCallback(
1052  virtual void addSimObjectAboutToBeLoadedCallback(
1054 
1058  virtual void addSimObjectAboutToBeAddedCallback(
1059  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1060  const DtObjectType& filter = DtObjectType::anyType(),
1061  bool invertFilter = false);
1062 
1066  virtual void addSimObjectAddedCallback(
1067  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1068  const DtObjectType& filter = DtObjectType::anyType(),
1069  bool invertFilter = false);
1070 
1074  virtual void addSimObjectAboutToBeRemovedCallback(
1075  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1076  const DtObjectType& filter = DtObjectType::anyType(),
1077  bool invertFilter = false);
1078 
1082  virtual void addSimObjectAboutToBeLoadedCallback(
1083  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1084  const DtObjectType& filter = DtObjectType::anyType(),
1085  bool invertFilter = false);
1086 
1089  virtual void removeSimObjectAboutToBeAddedCallback(
1090  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1091  const DtObjectType& filter = DtObjectType::anyType(),
1092  bool invertFilter = false);
1093 
1094  virtual void removeSimObjectAboutToBeRemovedCallback(
1095  const DtSimObjectListActivityCallbackInfo& cbInfo);
1096 
1099  virtual void removeSimObjectAddedCallback(
1100  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1101  const DtObjectType& filter = DtObjectType::anyType(),
1102  bool invertFilter = false);
1103 
1106  virtual void removeSimObjectAboutToBeLoadedCallback(
1107  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1108  const DtObjectType& filter = DtObjectType::anyType(),
1109  bool invertFilter = false);
1110 
1113  virtual void removeSimObjectAboutToBeAddedCallback(
1114  const DtSimObjectListActivityCallbackInfo& cbInfo);
1115  virtual void removeSimObjectAddedCallback(
1116  const DtSimObjectListActivityCallbackInfo& cbInfo);
1117  virtual void removeSimObjectAboutToBeLoadedCallback(
1118  const DtSimObjectListActivityCallbackInfo& cbInfo);
1119 
1122  virtual void removeSimObjectAboutToBeRemovedCallback(
1123  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1124  const DtObjectType& filter = DtObjectType::anyType(),
1125  bool invertFilter = false);
1126 
1130  virtual void invokeSimObjectAboutToBeAddedCallbacks(
1131  DtVrfObject* simObject) const;
1132 
1136  virtual void invokeSimObjectAddedCallbacks(
1137  DtVrfObject* simObject) const;
1138 
1142  virtual void invokeSimObjectAboutToBeRemovedCallbacks(
1143  DtVrfObject* simObject) const;
1144 
1148  virtual void invokeSimObjectAboutToBeLoadedCallbacks(
1149  DtVrfObject* simObject) const;
1150 
1152  virtual DtReflectedExtEntityList* reflectedEntityList() const;
1153 
1155  virtual DtReflectedExtAggregateList* reflectedAggregateList() const;
1156 
1160  virtual void setSimObjectType(const DtString& type);
1161  virtual const DtString& simObjectType() const;
1163 
1166  virtual bool addUUIDMappingForObject(DtVrfObject* vrfObject);
1167 
1169  virtual void removeUUIDMappingForObject(DtVrfObject* vrfObject);
1170 
1172  virtual DtEntityIdentifier nextId(DtVrfObject* o = NULL);
1173 
1178  virtual DtString generateUniqueName(int maxLength, const DtString&
1179  root = "Object") const;
1180 
1182  virtual void setRollUpRules(const DtAssembliesReaderWriter::RwRootNode&);
1183 
1185  virtual const DtAssembliesReaderWriter::RwRootNode& rollUpRules() const;
1186 
1188  virtual void setActivities(const DtRwActivities&);
1189 
1191  virtual const DtRwActivities& activities() const;
1192 
1195  virtual bool isLocal(const DtBaseEntityStateRepository& stateRep);
1196 
1200  static int aggregateSuperType(DtAggregateStateRepository* aggregate);
1201 
1206  virtual void objectsEmbarkedOn(DtVrfObjectStateRepository* vrfObjSR, std::vector<DtSharedVrfObjectReference>& list,
1207  bool includePseudoAggregates = true) const;
1208 
1213  static void designatorAddedCallback(DtReflectedDesignator * des,
1214  void * userData);
1215 
1220  static void designatorRemovedCallback(DtReflectedDesignator * des,
1221  void * userData);
1222 
1227  static void designatorChangedCallback(DtReflectedDesignator * des,
1228  void * userData);
1229 
1235  static DtBoolean designatorDiscoveryCriteriaCallback(DtReflectedObject * des,
1236  void * userData);
1237 
1238  static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
1239  void* userData);
1240  static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
1241  void* userData);
1242  static void activeSonarChangedCallback(DtReflectedActiveSonar* activeSonar,
1243  void* userData);
1244  static DtBoolean activeSonarDiscoveryCriteriaCallback(
1245  DtReflectedObject* activeSonar, void* userData);
1246 
1247  static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
1248  void* userData);
1249  static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
1250  void* userData);
1251  static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
1252  void* userData);
1253  static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
1254  DtReflectedObject* propNoise, void* userData);
1255 
1258  virtual bool canSimulate() const;
1259 
1262  virtual void setCanSimulate(bool);
1263 
1265  virtual void printReflectedObjectCounts() const;
1266 
1267 protected:
1269  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1270  virtual void invokeOrganizationManagerReadyCallbacks(const DtOrganizationManagerReadyCallbackInfo&);
1271 
1272 protected:
1275  virtual void rediscoverNonVRFEntities();
1276 
1280  virtual void remove(DtVrfObject* simObject);
1281  virtual void remove(DtSharedVrfObjectReference simObject);
1282  virtual DtVrfObject* remove(const DtEntityIdentifier& key);
1283 
1286  virtual void invokeObjectManagerAboutToRemoveAllCallbacks() const;
1287 
1290  virtual void onQueueObjectForRemoval(DtVrfObject* vrfObject);
1291 
1292  virtual const Coordinate_System* coordinateSystem() const;
1293  virtual Coordinate_System* coordinateSystem();
1294 
1297  virtual void modifyInterfaceContentForNewObject(DtSimInterfaceContent*, DtVrfObject*, bool& isLocal) const;
1298 
1301  virtual std::list<DtVector> calculateFormationOffsetsBasedOnFootprints(const DtList&) const;
1302 
1304  virtual std::vector<Dt3dBoundingVolume> boundingVolumesOfChildren(const DtList& subObjects,
1305  int& totalLeafNodes) const;
1306 
1307 protected:
1309  virtual DtObjectGeometricModelsManager* createObjectModelsManager() const;
1310 
1312  virtual DtVrfEntityIdentifierFactory* createVrfEntityIdentifierFactory();
1313 
1315  virtual DtVrfObjectPlanAdministrator* createPlanAdministrator();
1316 
1317  virtual bool finalizeObjectRead(DtVrfObject*);
1318 
1319  virtual DtEntityIdentifier findEntityIdentifier(DtlObjPtr);
1320 
1321 public:
1322  DtObjectGeometricModelsManager* objectModelsManager() const;
1323  DtVrfEntityIdentifierFactory* vrfEntityIdentifierFactory() const;
1324 
1325 #if DtHLA_1516
1326 
1327  DtGlobalObjectDesignator nextReservedGlobalObjectId();
1328 #endif
1329 
1330  virtual DtVrfObjectPlanAdministrator* planAdministrator();
1331 
1332  virtual DtSimInternalCommunicationManager* simInternalCommunicationManager();
1333 
1334 protected:
1336  virtual DtSimInternalCommunicationManager* createSimInternalCommunicationManager(
1337  DtSimManager* simMgr) const;
1338 
1339 protected:
1340 
1342  typedef std::pair<DtVrfObject*, DtVrfSimulationObjectGroupGeometry*> PendingObjectInformation;
1343  typedef std::vector<PendingObjectInformation> PendingObjectsInformation;
1344  typedef std::vector<PendingObjectsInformation> ObjectsAwaitingDiscovery;
1345 
1348  virtual bool addObjectsReadyForSimulation(PendingObjectsInformation&);
1349 
1353  static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr);
1354  static void modifyVrfOverlayCallback(DtSimMessage* msg, void* usr);
1355  static void autoReorganizeCallback(DtSimMessage* msg, void* usr);
1356  static void skipTaskCallback(DtSimMessage* msg, void* usr);
1357  static void setThresholdsCallback(DtSimMessage* msg, void* usr);
1358 
1359 #if DT_SINGLE_STATE_UPDATE_MESSAGE
1360  static void vrfObjectStateUpdateCallback(DtSimMessage* msg, void* usr);
1361 #endif
1362 
1370  static void createVrfObjectCallback(DtSimMessage* msg, void* usr);
1371  static void deleteVrfObjectCallback(DtSimMessage* msg, void* usr);
1372  static void deleteVrfObjectByIdCallback(DtSimMessage* msg, void* usr);
1373  static void vrfObjectDeletedCallback(DtSimMessage* msg, void* usr);
1374  static void orderOfBattleOpCallback(DtSimMessage* msg, void* usr);
1375  static void aggregateAsCallback(DtSimMessage* msg, void* usr);
1376 
1378  static void extendedLabelsOperationCallback(DtSimMessage* msg, void* usr);
1379  virtual void processExtendedLabelsOperation(DtSimMessage*);
1380 
1382  static void requestActivitiesCallback(DtSimMessage* msg, void* usr);
1383  virtual void processRequestActivities(DtSimMessage*);
1384 
1386  static void requestJoystickControlsCallback(DtSimMessage* msg, void* usr);
1387  virtual void processRequestJoystickControls(DtSimMessage*);
1388 
1391  virtual bool acceptRemoteEnvironmental(const DtEntityType& et) const;
1392 
1397  static void createVrfObjectPostDrainCallback(void* usr);
1398  static void deleteVrfObjectPostDrainCallback(void* usr);
1399  static void deleteVrfObjectByIdPostDrainCallback(void* usr);
1400  static void vrfObjectDeletedPostDrainCallback(void* usr);
1401  static void aggregateAsPostDrainCallback(void* usr);
1402 
1403  static void envProcessAddedCallback(
1404  DtReflectedEnvironmentProcess* envProcess, void* userData);
1405  static void envProcessRemovedCallback(
1406  DtReflectedEnvironmentProcess* envProcess, void* userData);
1407  static bool envProcessDiscoveryCriteria(
1408  DtReflectedObject* envProcess, void* userData);
1409 
1410  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo& info, void* usr);
1411 
1412 protected:
1413 
1416 
1419 
1422 
1428  static void postInitFromParamsCallback(DtVrfObject* vrfObject, void* usr);
1429 
1432  virtual DtCreateQueueEntry* createQueueEntryCreator(DtIfCreateVrfObject msg);
1433 
1436  virtual DtModifyQueueEntry* modifyQueueEntryCreator(DtIfModifyVrfObject msg);
1437 
1438 protected:
1441 
1443  DtHashlist* mySimObjectList;
1444 
1447 
1450 
1453 
1454  DtReflectedActiveSonarList* myRemoteActiveSonarList;
1455  DtReflectedPropulsionNoiseList* myRemotePropulsionNoiseList;
1456 
1459 
1461  {
1463  {
1464  if (!a || !b)
1465  {
1467  return a < b;
1468  }
1469 
1470  return (a->func() < b->func() ||
1471  (a->func() == b->func() && a->usrData() < b->usrData()) ||
1472  (a->func() == b->func() && a->usrData() == b->usrData() && a->filter() < b->filter()));
1473  }
1474  };
1475 
1478 
1483 
1488 
1492  typedef std::set<DtSimObjectListActivityCallbackInfo*, ObjectCallbackListCmp> AddedList;
1494 
1498  typedef std::set<DtSimObjectListActivityCallbackInfo*, ObjectCallbackListCmp> ToBeRemovedList;
1500 
1501  mutable std::set<DtSimObjectListActivityCallbackInfo*> myRemovalCallbacksRemoved;
1502 
1505 
1510 
1511  DtExerciseConn* myExerciseConn;
1512 
1515 
1517 
1522 
1524 
1527  std::set<DtUUID> myObjectsToRemoveQueue;
1528 
1531  typedef DtBoost::shared_ptr<DtCreateQueueEntry> DtCreateQueueEntryPtr;
1532  typedef std::list<DtCreateQueueEntryPtr> DtVrfObjectCreateQueue;
1534 
1537  typedef DtBoost::shared_ptr<DtModifyQueueEntry> DtModifyQueueEntryPtr;
1538  typedef std::list<DtModifyQueueEntryPtr> DtVrfObjectModifyQueue;
1540 
1543 
1545 
1547 
1548  typedef boost::unordered_map<DtString, DtSharedVrfObjectReference> GlobalIdToObjectMap;
1550 
1553 
1555 
1557 
1559 
1561 
1563 
1565 
1568 
1571 
1574 
1576 
1577  DtFilename myDataDir;
1578  DtFilename myUserDataDir;
1579 
1581 
1583 
1586 
1590 
1593 
1594  typedef boost::unordered_map<DtUUID, DtSharedVrfObjectReference> UUIDToObjectMap;
1596 
1597  typedef boost::unordered_map<DtString, DtSharedVrfObjectReference> NameToObjectMap;
1600 
1601  typedef boost::unordered_map<DtVrfObject*, DtSharedVrfObjectReference> ObjectToObjectMap;
1603 
1605 
1606  //Incremented each time a callback list is invoked.
1607  //Decremented when done invoking callbacks.
1608  //Unsigned because invoke can be called from within
1609  //a callback.
1615  //@]
1616 
1617  std::vector<DtVrfObject*> myJustAdded;
1618 
1619  std::map<int, DtlObjPtr> mySortedByEntityId;
1625 
1626 #if DtHLA_1516
1627  std::set<DtGlobalObjectDesignator> myReservedGlobalIds;
1628 #endif
1629 
1630 private:
1631 
1632  std::vector<DtVrfObjectManagerCallbackInfo> myAboutToRemoveAllCallbackList;
1633 };
1634 
1636 {
1638 }
1639 
1641 {
1643 }

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)