VR-Forces 4.2 Class Documentation
vrfObjMgr.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2001 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include "vrfutil/rwObjType.h"
12 #include "vrfutil/callbackList.h"
13 #include "vrfutil/rwList.h"
15 #include "vrfobjcore/orgManager.h"
17 #include "vrfobjcore/fltrFcnPred.h"
18 #include "vrfobjcore/simObjIter.h"
20 #include <vrfExtProtocol/objTypeEnums.h>
22 
24 #include <vlpi/appearance.h>
25 #include <vlutil/vlFilename.h>
26 #include <vlutil/vlList.h>
27 #include <vlutil/vlConfig.h>
28 #include <vlutil/vlSmartPointers.h>
29 
31 #include <vector>
32 #include <list>
33 #include <set>
34 
36 #define DT_SINGLE_STATE_UPDATE_MESSAGE 0
37 
38 class DtTerrainDbFactory;
39 
40 class DtVrfObject;
41 class DtHashlist;
42 class DtExerciseConn;
43 class DtReflectedObject;
44 class DtReflectedAggregate;
45 class DtReflectedExtEntity;
46 class DtReflectedExtAggregate;
47 class DtReflectedExtEntityList;
48 class DtReflectedExtAggregateList;
49 class DtVrfParameterDb;
51 class DtSimObjectSubComponentTypes;
52 class DtVertexList;
53 class DtAggregateStateRepository;
54 class DtBaseEntityStateRepository;
56 class DtSimManager;
57 class DtVrfObjectManagerTickArguments;
58 class DtSimTickArguments;
59 class DtSimMessage;
61 class DtIfAggregateAs;
63 class DtReflectedEnvironmentProcess;
64 class DtReflectedControlObjectList;
66 class DtReflectedObject;
67 class DtEchelonIdTable;
68 class DtEchelonId;
69 class Coordinate_System;
74 class DtReflectedDesignator;
76 class DtReflectedDesignatorList;
77 class DtReflectedActiveSonar;
78 class DtReflectedActiveSonarList;
79 class DtReflectedPropulsionNoise;
80 class DtReflectedPropulsionNoiseList;
81 class DtCreateQueueEntry;
82 class DtModifyQueueEntry;
84 
87 typedef void (*DtSimObjectListActivityCallbackFcn)(DtVrfObject* simObject,
88  void* usr);
89 
91 typedef bool (*DtSimObjectUserInitFcn)(DtVrfObject* object, void* usr);
92 
96  void* usr);
97 
99 typedef bool (*DtVrfObjectUserInitFcn)(DtVrfObject* vrfObject, void* usr);
100 
103 typedef void (*DtVrfObjectManagerCallbackFcn)(const DtVrfObjectManager& objectManager,
104  void* usr);
105 
109 const int DtSimMaxForceTypes = 256;
110 
113 {
115  void* myUserData;
116 };
117 
120 {
124 };
125 
128 
141 {
142 public:
144 
148  typedef enum
149  {
150  DtUseParameterDatabaseAggregateState = 0,
152  DtCreateDisaggregatedEntity
153  } DtAggregateCreationMode;
154 
155 public:
156 
158  DtVrfObjectManager(DtSimManager* simManager, int entityAdvisory = 100);
159 
165  virtual ~DtVrfObjectManager();
168 
170  virtual void clearRemoteComponentAttachmentSystem();
171 
174  virtual void createRemoteComponentAttachmentManager();
175 
177  virtual bool initializeRemoteComponentAttachmentSystem(const DtFilename& fromFile);
178 
180  DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager();
181  const DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager() const;
183 
186  virtual bool create();
187 
188  virtual bool createObjectNameHashlist();
189 
190 #ifdef DtHLA
191  virtual bool createGlobalIdHashlist();
192 #endif
193 
196  virtual bool init();
197 
199  virtual void createDIGuyCharacterManager(const DtFilename & diGuyDataFile,
200  const DtFilename & diGuyAnimationsFile);
201 
211  virtual bool add(DtVrfObject* simObject);
212 
213 private:
216  using DtRwList::add;
217  using DtRwList::remove;
218 
219 public:
220 
222  virtual void setParameterDatabase(DtVrfParameterDb* parameterDatabase);
223  virtual DtVrfParameterDb* parameterDatabase();
224 
227  virtual DtVrfObject* lookupVrfObject(const DtEntityIdentifier& key);
228  virtual const DtVrfObject* lookupVrfObject(const DtEntityIdentifier& key) const;
229 
230  virtual DtVrfObject* lookupVrfObjectByGlobalId(
231  const DtGlobalObjectDesignator& globalId);
232  virtual const DtVrfObject* lookupVrfObjectByGlobalId(
233  const DtGlobalObjectDesignator& globalId) const;
234 
235  virtual DtVrfObject* lookupVrfObjectByName(const DtString& name, bool
236  warnOnFailure = true);
237  virtual const DtVrfObject* lookupVrfObjectByName(const DtString& name, bool
238  warnOnFailure = true) const;
239 
240  virtual const DtVrfObject* lookupVrfObjectByEchelonIdString(
241  const DtString& echIdString) const;
242  virtual DtVrfObject* lookupVrfObjectByEchelonIdString(
243  const DtString& echIdString);
244 
245  virtual const DtVrfObject* lookupVrfObjectByEchelonId(
246  const DtEchelonId& echId) const;
247  virtual DtVrfObject* lookupVrfObjectByEchelonId(
248  const DtEchelonId& echId);
249 
253  virtual DtVrfObject * lookupVrfObjectByObjectId(const DtObjectId & id) const;
254 
255 
259  virtual DtGlobalObjectDesignator lookupGlobalId(const DtObjectId & id) const;
260 
264  virtual DtObjectId lookupObjectId(const DtGlobalObjectDesignator & globalId);
265 
267  virtual DtManagedObjectListConstPtr getList(const DtVrfObjectPredicate& predicate,
268  bool reevaluateFlag = false, DtTime evaluationPeriod = 0);
269 
270  virtual const DtVrfObjectFilterIterator& vrfIterator(
271  const DtObjectType& filter = DtObjectType::anyType(),
272  bool invertFilter = false) const;
273 
274  virtual const DtVrfObjectFilterIterator& vrfIterator(
275  const DtVrfObjectPredicate& predicate) const;
276 
279  virtual const DtVrfObjectFilterIterator& vrfIterator(DtFilterFcn filter,
280  bool invertFilter = false, void* usrData = 0)const;
281 
284  virtual void removeAndDelete(const DtString& objectName);
285  virtual void removeAndDelete(const DtEntityIdentifier& key);
286  virtual void removeAndDelete(DtVrfObject* object);
287 
289  virtual void removeAndDeleteAllLocals();
290 
293  virtual void removeAndDeleteAll();
294 
299  virtual void setExerciseConnection(DtExerciseConn* connection);
300  virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
301 
303  virtual DtReflectedControlObjectList* reflectedEnvironmentProcessList() const;
304 
307  virtual DtReflectedControlObjectList* createReflectedControlObjectList(DtExerciseConn* exConn);
308 
315  virtual void registerInterfaceCallbacks();
316 
318  virtual const DtSimManager* simManager() const;
320  virtual DtSimManager* simManager();
321 
331  virtual void processCreateVrfObject(DtSimMessage* msg);
332 
339  virtual void processCreateVrfObject(DtIfCreateVrfObject ifCreateVrfObject);
340 
348  virtual void processModifyVrfObject(DtSimMessage* msg);
349 
356  virtual void processModifyVrfObject(DtIfModifyVrfObject modObj);
357 
360  virtual void processModifyVrfOverlay(DtSimMessage* msg);
363  virtual void processDeleteVrfObject(DtSimMessage* msg);
366  virtual void processDeleteVrfObjectById(DtSimMessage* msg);
369  virtual void processVrfObjectDeleted(DtSimMessage* msg);
372  virtual void processOrderOfBattleOp(DtSimMessage* msg);
375  virtual void processAutoReorganize(DtSimMessage* msg);
378  virtual void processAggregateAs(DtSimMessage* msg);
381  virtual void processSkipTask(DtSimMessage* msg);
382 
383 
388  virtual void processSetThresholds(DtSimMessage* msg);
389 
391  virtual void processCreateControlObject(DtSimMessage* msg);
392  virtual void processCreateEntity(DtSimMessage* msg);
393  virtual void processRemoveEntity(DtSimMessage* msg);
394  virtual void processRequestEntityName(DtSimMessage* msg);
395 
400  virtual void processEntityAddedCallback(DtReflectedExtEntity* entity);
401  virtual void processAggregateAddedCallback(DtReflectedExtAggregate* aggregate);
402 
405  virtual void processEntityRemovedCallback(DtReflectedExtEntity* entity);
406  virtual void processAggregateRemovedCallback(DtReflectedExtAggregate* aggregate);
407 
408  virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
409  virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
410  virtual void processDesignatorChangedCallback(DtReflectedDesignator * des);
411  DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
412 
413  virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
414  virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
415  virtual void processActiveSonarChangedCallback(DtReflectedActiveSonar* des);
416  DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
417 
418  typedef std::list<DtReflectedActiveSonar*> ReflectedActiveSonars;
419  virtual ReflectedActiveSonars findActiveSonarsForHostEntity(
420  const DtVrfObject* host) const;
421 
422  virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
423  virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
424  virtual void processPropulsionNoiseChangedCallback(DtReflectedPropulsionNoise* des);
425  DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
426 
427  virtual bool hasEnabledActiveSonar(const DtVrfObject* host) const;
428 
429  virtual DtReflectedPropulsionNoise* propulsionNoiseForHost(const DtVrfObject* host) const;
430 
432  virtual void processAggregateChanged(DtReflectedExtAggregate* aggregate);
433 
434  virtual void processEnvProcessAddedCallback(
435  DtReflectedEnvironmentProcess* envProcess);
436  virtual void processEnvProcessRemovedCallback(
437  DtReflectedEnvironmentProcess* envProcess);
438  virtual bool processEnvProcessDiscoveryCriteria(
439  DtReflectedEnvironmentProcess* envProcess);
440 
443  virtual void removeObjectSubordinates(DtVrfObject* object);
444 
447  virtual void queueObjectForRemoval(const DtEntityIdentifier& key);
448 
450  virtual void removeObjectsQueuedForRemoval();
451 
460  virtual void tick();
461 
463  virtual DtVrfObject* createAndInitVrfObject(
464  DtIfCreateVrfObject* creationInfo);
465 
466  virtual DtVrfObject* createAndInitVrfObject(
467  DtIfAggregateAs* aggInfo);
468 
470  virtual DtVrfObject* createAndInitVrfObject(
471  DtReflectedEntity* entity);
472 
473  virtual DtVrfObject* createAndInitVrfObject(
474  DtReflectedAggregate* aggregate,
475  int superType = DtObjectTypeAggregate);
476 
477  virtual DtVrfObject* createAndInitVrfObject(DtReflectedEnvironmentProcess* envProcess);
478 
488  virtual DtVrfObject* createAndInitVrfObject(
489  const DtObjectType& objectType,
490  bool publishLocalObject = true,
491  const DtString& objectName = DtString::nullString(),
492  const DtString& objectLabel = DtString::nullString(),
493  DtForceType forceType = DtForceOther,
494  const DtList* vertices = 0,
495  const DtTaitBryan* orientation = 0,
496  bool projection = false,
497  bool closedFigure = false,
498  const DtAppearance& appearance = DtAppearance::nullAppearance(),
499  const DtString& readerWriterName = DtString::nullString(),
500  DtReaderWriterRegistry* parentRegistry = 0,
501  bool createSubObjects = false,
502  DtVrfObjectUserInitFcn userInit = 0,
503  void* userInitData = 0,
504  bool organize = true,
505  const DtString& startingFormation = DtDefaultFormationString,
506  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
508 
516  virtual DtVrfObject* createAndInitVrfObject(
517  const DtObjectType& objectType,
518  bool publishLocalObject = true,
519  const DtString& objectName = DtString::nullString(),
520  const DtString& objectLabel = DtString::nullString(),
521  DtForceType forceType = DtForceOther,
522  const DtVector& position = DtVector::zero(),
523  const DtTaitBryan* orientation = 0,
524  bool projection = false,
525  bool closedFigure = false,
526  const DtAppearance& appearance = DtAppearance::nullAppearance(),
527  const DtString& readerWriterName = DtString::nullString(),
528  DtReaderWriterRegistry* parentRegistry = 0,
529  bool createSubObjects = false,
530  DtVrfObjectUserInitFcn userInitFcn = 0,
531  void* userInitData = 0,
532  bool organize = true,
533  const DtString& startingFormation = DtDefaultFormationString,
534  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
536 
544  virtual void createSubObjectsFromParameters(DtVrfObject* parent,
545  bool publishSubobjects);
546 
553  virtual DtVrfObject* createSubObjectFromParameterEntry(
554  const DtVrfSubObjectParameterEntry& entry, const DtVector& positionOffsetFromParent,
555  const DtVrfObject& parent,
556  const DtString& formationName,
557  bool publishSubObject);
558 
560  virtual bool readOrderOfBattleFile(const DtString & filename);
561  virtual bool writeOrderOfBattleFile(const DtString & filename);
565  virtual bool objectShouldBeSavedToOrderOfBattle(
566  const DtVrfObject* vrfObject);
567 
568  virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath,
569  const DtVariableBindingsList& variableBindings);
570 
573  static void tickCallback(void* args);
574 
578  virtual void addVrfObjectAboutToBeAddedCallback(
579  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
580  const DtObjectType& filter = DtObjectType::anyType(),
581  bool invertFilter = false);
582 
586  virtual void addVrfObjectAddedCallback(
587  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
588  const DtObjectType& filter = DtObjectType::anyType(),
589  bool invertFilter = false);
590 
594  virtual void addVrfObjectAboutToBeLoadedCallback(
595  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
596  const DtObjectType& filter = DtObjectType::anyType(),
597  bool invertFilter = false);
598 
599 
604  virtual void addVrfObjectAboutToBeRemovedCallback(
605  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
606  const DtObjectType& filter = DtObjectType::anyType(),
607  bool invertFilter = false);
608 
611  virtual void removeVrfObjectAboutToBeAddedCallback(
612  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
613  const DtObjectType& filter = DtObjectType::anyType(),
614  bool invertFilter = false);
615 
618  virtual void removeVrfObjectAboutToBeLoadedCallback(
619  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
620  const DtObjectType& filter = DtObjectType::anyType(),
621  bool invertFilter = false);
622 
625  virtual void removeVrfObjectAddedCallback(
626  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
627  const DtObjectType& filter = DtObjectType::anyType(),
628  bool invertFilter = false);
629 
632  virtual void removeVrfObjectAboutToBeRemovedCallback(
633  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
634  const DtObjectType& filter = DtObjectType::anyType(),
635  bool invertFilter = false);
636 
639  virtual void addObjectManagerAboutToRemoveAllCallback(
640  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
641 
644  virtual void removeObjectManagerAboutToRemoveAllCallback(
645  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
646 
648  virtual void addOrganizationManagerReadyCallback(
649  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
650 
652  virtual void removeOrganizationManagerReadyCallback(
653  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
654 
656  virtual void enableAutoReorganization();
657  virtual void disableAutoReorganization();
659  virtual bool autoReorganizeEnabled() const;
660 
662  virtual DtVrfObject* lookupTopLevelVrfObject(DtForceType forceType);
664  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType);
667  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType,
668  const DtString& name);
670  virtual DtString topLevelName(DtForceType forceType);
671 
679  virtual DtString nextName(const DtObjectType& objectType);
681  virtual DtString nextUnorganizedName();
684  virtual DtString uniquifyName(const DtString& name, const DtObjectType& objectType);
685 
689  virtual unsigned int maxNameLengthForType(const DtObjectType& objectType);
690 
693  virtual void processOverlayOp(DtSimMessage* msg);
694  virtual bool readOverlayFile(const DtString& filename);
695 
698  virtual DtReflectedObject* lookupReflectedObject(
699  const DtGlobalObjectDesignator& globalId) const;
700 
702  virtual void rediscoverObjects();
703 
706  virtual void requestUpdatesForRemoteNonVrfObjects() const;
707 
710  virtual void objectNameChanged(const DtString& oldName,
711  const DtString& newName);
712 
714 
715  virtual void addObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
716  virtual void removeObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
718 
721  virtual bool addNameAlias(const DtString& aliasName, DtVrfObject* object);
722 
723  virtual void removeNameAlias(const DtString& alias);
724 
741  virtual DtVrfObject* aggregateAs(
742  const DtObjectType& aggregateType,
743  DtForceType force,
744  const DtVector& dbPosition,
745  DtReal heading,
746  DtList* subordinateNames = 0,
747  const DtString& aggregateName = DtString::nullString());
748 
752  virtual bool addSubordinatesToAggregate(DtVrfObject* object,
753  const DtList* subordinateNames, DtAggregateState desiredState = DtFullyDisaggregated);
754 
760  static void addSubordinatesToAggregateCompleteCallback(void* usr);
761 
762  virtual DtOrganizationManager* organizationManager();
763  virtual const DtOrganizationManager* organizationManager() const;
764 
767  virtual DtDIGuyCharacterDataManager * diGuyCharacterManager();
768  virtual const DtDIGuyCharacterDataManager * diGuyCharacterManager() const;
769 
771  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
772 
774  virtual unsigned objectCount() const;
775 
777  virtual DtVrfObject* lookup(const DtEntityIdentifier& key);
778  virtual const DtVrfObject* lookup(const DtEntityIdentifier& key) const;
779 
781  virtual DtVrfObject* lookupObjectByGlobalId(const DtGlobalObjectDesignator& globalId);
782  virtual const DtVrfObject* lookupObjectByGlobalId(
783  const DtGlobalObjectDesignator& globalId) const;
784 
786  virtual DtVrfObject* lookupObjectByName(const DtString& objectName);
787  virtual const DtVrfObject* lookupObjectByName(const DtString& objectName) const;
788 
790  virtual const DtSimulationAddress& simulationAddress() const;
791 
797  const DtSimObjectIterator& iterator() const;
798 
800  virtual bool createSimObjectList();
801 
804  virtual DtHashlist* hashlist() const;
805 
809  virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
810  virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
811 
816  static void entityAddedCallback(DtReflectedExtEntity* entity, void* userData);
817 
822  static void entityRemovedCallback(DtReflectedExtEntity* entity,
823  void* userData);
824 
829  static void aggregateAddedCallback(DtReflectedExtAggregate* entity,
830  void* userData);
831 
836  static void aggregateRemovedCallback(DtReflectedExtAggregate* entity,
837  void* userData);
838 
843  static void entityChangedCallback(DtReflectedExtEntity* entity,
844  void* userData);
845 
850  static void aggregateChangedCallback(DtReflectedExtAggregate* aggregate,
851  void* userData);
852 
854  virtual void processEntityChanged(DtReflectedExtEntity* entity);
855 
861  static bool entityDiscoveryCriteriaCallback(DtReflectedObject* entity,
862  void* userData);
863 
869  static bool aggregateDiscoveryCriteriaCallback(DtReflectedObject* aggregate,
870  void* userData);
871 
877  virtual bool processEntityDiscoveryCriteria(
878  DtReflectedEntity* entity);
879 
885  virtual bool processAggregateDiscoveryCriteria(
886  DtReflectedAggregate* aggregate);
887 
890  virtual DtReflectedDesignator * lookupLasedTargetByGlobalId(const DtGlobalObjectDesignator&
891  tgtGlobalId);
892 
896  virtual DtReflectedDesignator* lookupLasedTargetByDesignatorCode(const int code);
897 
901  virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
902 
903  virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
904  virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
905 
906  DtReflectedDesignatorList* reflectedDesignatorList() const;
907 
908  DtReflectedActiveSonarList* reflectedActiveSonarList() const;
909  DtReflectedPropulsionNoiseList* reflectedPropulsionNoiseList() const;
910 
912  virtual DtVrfParameterDb* objectParametersDB() const;
913 
916  virtual void addSimObjectAboutToBeAddedCallback(
918  virtual void addSimObjectAddedCallback(
920  virtual void addSimObjectAboutToBeRemovedCallback(
922  virtual void addSimObjectAboutToBeLoadedCallback(
924 
928  virtual void addSimObjectAboutToBeAddedCallback(
929  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
930  const DtObjectType& filter = DtObjectType::anyType(),
931  bool invertFilter = false);
932 
936  virtual void addSimObjectAddedCallback(
937  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
938  const DtObjectType& filter = DtObjectType::anyType(),
939  bool invertFilter = false);
940 
944  virtual void addSimObjectAboutToBeRemovedCallback(
945  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
946  const DtObjectType& filter = DtObjectType::anyType(),
947  bool invertFilter = false);
948 
952  virtual void addSimObjectAboutToBeLoadedCallback(
953  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
954  const DtObjectType& filter = DtObjectType::anyType(),
955  bool invertFilter = false);
956 
959  virtual void removeSimObjectAboutToBeAddedCallback(
960  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
961  const DtObjectType& filter = DtObjectType::anyType(),
962  bool invertFilter = false);
963 
964  virtual void removeSimObjectAboutToBeRemovedCallback(
966 
969  virtual void removeSimObjectAddedCallback(
970  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
971  const DtObjectType& filter = DtObjectType::anyType(),
972  bool invertFilter = false);
973 
976  virtual void removeSimObjectAboutToBeLoadedCallback(
977  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
978  const DtObjectType& filter = DtObjectType::anyType(),
979  bool invertFilter = false);
980 
983  virtual void removeSimObjectAboutToBeAddedCallback(
985  virtual void removeSimObjectAddedCallback(
987  virtual void removeSimObjectAboutToBeLoadedCallback(
989 
992  virtual void removeSimObjectAboutToBeRemovedCallback(
993  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
994  const DtObjectType& filter = DtObjectType::anyType(),
995  bool invertFilter = false);
996 
1000  virtual void invokeSimObjectAboutToBeAddedCallbacks(
1001  DtVrfObject* simObject) const;
1002 
1006  virtual void invokeSimObjectAddedCallbacks(
1007  DtVrfObject* simObject) const;
1008 
1012  virtual void invokeSimObjectAboutToBeRemovedCallbacks(
1013  DtVrfObject* simObject) const;
1014 
1018  virtual void invokeSimObjectAboutToBeLoadedCallbacks(
1019  DtVrfObject* simObject) const;
1020 
1022  virtual DtReflectedExtEntityList* reflectedEntityList() const;
1023 
1025  virtual DtReflectedExtAggregateList* reflectedAggregateList() const;
1026 
1030  virtual void setSimObjectType(const DtString& type);
1031  virtual const DtString& simObjectType() const;
1033 
1035  virtual const DtEntityIdentifier& nextId();
1036 
1041  virtual DtString generateUniqueName(int maxLength, const DtString&
1042  root = "Object") const;
1043 
1046  virtual bool isLocal(const DtBaseEntityStateRepository& stateRep);
1047 
1051  static int aggregateSuperType(DtAggregateStateRepository* aggregate);
1052 
1057  virtual void objectsEmbarkedOn(DtVrfObjectStateRepository* vrfObjSR, std::list<DtString>& list,
1058  bool includePsuedoAggregates = true) const;
1059 
1064  static void designatorAddedCallback(DtReflectedDesignator * des,
1065  void * userData);
1066 
1071  static void designatorRemovedCallback(DtReflectedDesignator * des,
1072  void * userData);
1073 
1078  static void designatorChangedCallback(DtReflectedDesignator * des,
1079  void * userData);
1080 
1086  static DtBoolean designatorDiscoveryCriteriaCallback(DtReflectedObject * des,
1087  void * userData);
1088 
1089  static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
1090  void* userData);
1091  static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
1092  void* userData);
1093  static void activeSonarChangedCallback(DtReflectedActiveSonar* activeSonar,
1094  void* userData);
1095  static DtBoolean activeSonarDiscoveryCriteriaCallback(
1096  DtReflectedObject* activeSonar, void* userData);
1097 
1098  static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
1099  void* userData);
1100  static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
1101  void* userData);
1102  static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
1103  void* userData);
1104  static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
1105  DtReflectedObject* propNoise, void* userData);
1106 
1109  virtual bool canSimulate() const;
1110 
1112  virtual void printReflectedObjectCounts() const;
1113 
1114 protected:
1116  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1117  virtual void invokeOrganizationManagerReadyCallbacks(const DtOrganizationManagerReadyCallbackInfo&);
1118 
1119 protected:
1122  virtual void rediscoverNonVRFEntities();
1123 
1127  virtual void remove(DtVrfObject* simObject);
1128  virtual DtVrfObject* remove(const DtEntityIdentifier& key);
1129 
1132  virtual void invokeObjectManagerAboutToRemoveAllCallbacks() const;
1133 
1136  virtual void onQueueObjectForRemoval(DtVrfObject* vrfObject);
1137 
1138 
1139  virtual const Coordinate_System* coordinateSystem() const;
1140  virtual Coordinate_System* coordinateSystem();
1141 
1142 protected:
1144  virtual DtObjectGeometricModelsManager* createObjectModelsManager() const;
1145 
1147  virtual DtVrfObjectPlanAdministrator* createPlanAdministrator();
1148 
1149 public:
1150  DtObjectGeometricModelsManager* objectModelsManager() const;
1151  void setTerrainDbFactory(DtTerrainDbFactory*);
1152  DtTerrainDbFactory* terrainDbFactory();
1153 
1154  virtual DtVrfObjectPlanAdministrator* planAdministrator();
1155 
1156  virtual DtSimInternalCommunicationManager* simInternalCommunicationManager();
1157 
1158 protected:
1160  virtual DtSimInternalCommunicationManager* createSimInternalCommunicationManager(
1161  DtSimManager* simMgr) const;
1162 
1163 protected:
1164 
1168  static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr);
1169  static void modifyVrfOverlayCallback(DtSimMessage* msg, void* usr);
1170  static void autoReorganizeCallback(DtSimMessage* msg, void* usr);
1171  static void skipTaskCallback(DtSimMessage* msg, void* usr);
1172  static void setThresholdsCallback(DtSimMessage* msg, void* usr);
1173 
1174 #if DT_SINGLE_STATE_UPDATE_MESSAGE
1175  static void vrfObjectStateUpdateCallback(DtSimMessage* msg, void* usr);
1176 #endif
1177 
1185  static void createVrfObjectCallback(DtSimMessage* msg, void* usr);
1186  static void deleteVrfObjectCallback(DtSimMessage* msg, void* usr);
1187  static void deleteVrfObjectByIdCallback(DtSimMessage* msg, void* usr);
1188  static void vrfObjectDeletedCallback(DtSimMessage* msg, void* usr);
1189  static void orderOfBattleOpCallback(DtSimMessage* msg, void* usr);
1190  static void aggregateAsCallback(DtSimMessage* msg, void* usr);
1191 
1196  static void createVrfObjectPostDrainCallback(void* usr);
1197  static void deleteVrfObjectPostDrainCallback(void* usr);
1198  static void deleteVrfObjectByIdPostDrainCallback(void* usr);
1199  static void vrfObjectDeletedPostDrainCallback(void* usr);
1200  static void orderOfBattleOpPostDrainCallback(void* usr);
1201  static void aggregateAsPostDrainCallback(void* usr);
1202 
1203  static void envProcessAddedCallback(
1204  DtReflectedEnvironmentProcess* envProcess, void* userData);
1205  static void envProcessRemovedCallback(
1206  DtReflectedEnvironmentProcess* envProcess, void* userData);
1207  static bool envProcessDiscoveryCriteria(
1208  DtReflectedObject* envProcess, void* userData);
1209 
1210  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo& info, void* usr);
1211 
1212 protected:
1213 
1216 
1219 
1222 
1228  static void postInitFromParamsCallback(DtVrfObject* vrfObject, void* usr);
1229 
1232  virtual DtCreateQueueEntry* createQueueEntryCreator(DtIfCreateVrfObject msg);
1233 
1236  virtual DtModifyQueueEntry* modifyQueueEntryCreator(DtIfModifyVrfObject msg);
1237 
1238 protected:
1241 
1243  DtHashlist* mySimObjectList;
1244 
1246  DtReflectedExtEntityList* myRemoteEntitiesList;
1247 
1249  DtReflectedExtAggregateList* myRemoteAggregateEntitiesList;
1250 
1252  DtReflectedDesignatorList* myRemoteDesignatorsList;
1253 
1254  DtReflectedActiveSonarList* myRemoteActiveSonarList;
1255  DtReflectedPropulsionNoiseList* myRemotePropulsionNoiseList;
1256 
1259 
1264 
1269 
1274 
1279 
1282 
1287 
1288  DtExerciseConn* myExerciseConn;
1289 
1292 
1294 
1299 
1301 
1305 
1308  typedef DtBoost::shared_ptr<DtCreateQueueEntry> DtCreateQueueEntryPtr;
1309  typedef std::list<DtCreateQueueEntryPtr> DtVrfObjectCreateQueue;
1311 
1314  typedef DtBoost::shared_ptr<DtModifyQueueEntry> DtModifyQueueEntryPtr;
1315  typedef std::list<DtModifyQueueEntryPtr> DtVrfObjectModifyQueue;
1317 
1320 
1321  DtReflectedControlObjectList* myRemoteEnvironmentalsList;
1322 
1324 
1326 
1327 #ifdef DtHLA
1328  DtHashlist* myGlobalIdHashlist;
1329 #endif
1330 
1333 
1335 
1336  const Coordinate_System* myCoordinateSystemPtr;
1337 
1339 
1341 
1343 
1345 
1348 
1350 
1352 
1353 private:
1354 
1355  std::vector<DtVrfObjectManagerCallbackInfo> myAboutToRemoveAllCallbackList;
1356 
1358  DtTerrainDbFactory* myTerrainDbFactory;
1359 };
1360 
1362 {
1364 }
1365 
1367 {
1369 }
1370 
1371 

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)