VR-Forces 4.1.1 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"
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 
35 
37 #define DT_SINGLE_STATE_UPDATE_MESSAGE 0
38 
39 class DtTerrainDbFactory;
40 
41 class DtVrfObject;
42 class DtHashlist;
43 class DtExerciseConn;
44 class DtReflectedObject;
45 class DtReflectedAggregate;
50 class DtVrfParameterDb;
52 class DtSimObjectSubComponentTypes;
53 class DtVertexList;
55 class DtBaseEntityStateRepository;
57 class DtSimManager;
58 class DtVrfObjectManagerTickArguments;
59 class DtSimTickArguments;
60 class DtSimMessage;
62 class DtIfAggregateAs;
64 class DtReflectedEnvironmentProcess;
67 class DtReflectedObject;
68 class DtEchelonIdTable;
69 class DtEchelonId;
70 class Coordinate_System;
75 class DtReflectedDesignator;
77 class DtReflectedDesignatorList;
78 class DtCreateQueueEntry;
79 class DtModifyQueueEntry;
81 
84 typedef void (*DtSimObjectListActivityCallbackFcn)(DtVrfObject* simObject,
85  void* usr);
86 
88 typedef bool (*DtSimObjectUserInitFcn)(DtVrfObject* object, void* usr);
89 
93  void* usr);
94 
96 typedef bool (*DtVrfObjectUserInitFcn)(DtVrfObject* vrfObject, void* usr);
97 
100 typedef void (*DtVrfObjectManagerCallbackFcn)(const DtVrfObjectManager& objectManager,
101  void* usr);
102 
106 const int DtSimMaxForceTypes = 256;
107 
110 {
112  void* myUserData;
113 };
114 
117 {
121 };
122 
125 
135 {
136 public:
138 
142  typedef enum
143  {
144  DtUseParameterDatabaseAggregateState = 0,
146  DtCreateDisaggregatedEntity
147  } DtAggregateCreationMode;
148 
149 public:
150 
152  DtVrfObjectManager(DtSimManager* simManager, int entityAdvisory = 100);
153 
159  virtual ~DtVrfObjectManager();
162 
164  virtual void clearRemoteComponentAttachmentSystem();
165 
168  virtual void createRemoteComponentAttachmentManager();
169 
171  virtual bool initializeRemoteComponentAttachmentSystem(const DtFilename& fromFile);
172 
174  DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager();
175  const DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager() const;
177 
180  virtual bool create();
181 
182  virtual bool createObjectNameHashlist();
183 
184 #ifdef DtHLA
185  virtual bool createGlobalIdHashlist();
186 #endif
187 
190  virtual bool init();
191 
193  virtual void createDIGuyCharacterManager(const DtFilename & diGuyDataFile,
194  const DtFilename & diGuyAnimationsFile);
195 
205  virtual bool add(DtVrfObject* simObject);
206 
207 private:
210  using DtRwList::add;
211  using DtRwList::remove;
212 
213 public:
214 
216  virtual void setParameterDatabase(DtVrfParameterDb* parameterDatabase);
217  virtual DtVrfParameterDb* parameterDatabase();
218 
221  virtual DtVrfObject* lookupVrfObject(const DtEntityIdentifier& key);
222  virtual const DtVrfObject* lookupVrfObject(const DtEntityIdentifier& key) const;
223 
224  virtual DtVrfObject* lookupVrfObjectByGlobalId(
225  const DtGlobalObjectDesignator& globalId);
226  virtual const DtVrfObject* lookupVrfObjectByGlobalId(
227  const DtGlobalObjectDesignator& globalId) const;
228 
229  virtual DtVrfObject* lookupVrfObjectByName(const DtString& name, bool
230  warnOnFailure = true);
231  virtual const DtVrfObject* lookupVrfObjectByName(const DtString& name, bool
232  warnOnFailure = true) const;
233 
234  virtual const DtVrfObject* lookupVrfObjectByEchelonIdString(
235  const DtString& echIdString) const;
236  virtual DtVrfObject* lookupVrfObjectByEchelonIdString(
237  const DtString& echIdString);
238 
239  virtual const DtVrfObject* lookupVrfObjectByEchelonId(
240  const DtEchelonId& echId) const;
241  virtual DtVrfObject* lookupVrfObjectByEchelonId(
242  const DtEchelonId& echId);
243 
247  virtual DtVrfObject * lookupVrfObjectByObjectId(const DtObjectId & id) const;
248 
249 
253  virtual DtGlobalObjectDesignator lookupGlobalId(const DtObjectId & id) const;
254 
258  virtual DtObjectId lookupObjectId(const DtGlobalObjectDesignator & globalId);
259 
261  virtual DtManagedObjectListConstPtr getList(const DtVrfObjectPredicate& predicate,
262  bool reevaluateFlag = false, DtTime evaluationPeriod = 0);
263 
264  virtual const DtVrfObjectFilterIterator& vrfIterator(
265  const DtObjectType& filter = DtObjectType::anyType(),
266  bool invertFilter = false) const;
267 
268  virtual const DtVrfObjectFilterIterator& vrfIterator(
269  const DtVrfObjectPredicate& predicate) const;
270 
273  virtual const DtVrfObjectFilterIterator& vrfIterator(DtFilterFcn filter,
274  bool invertFilter = false, void* usrData = 0)const;
275 
278  virtual void removeAndDelete(const DtString& objectName);
279  virtual void removeAndDelete(const DtEntityIdentifier& key);
280  virtual void removeAndDelete(DtVrfObject* object);
281 
283  virtual void removeAndDeleteAllLocals();
284 
287  virtual void removeAndDeleteAll();
288 
293  virtual void setExerciseConnection(DtExerciseConn* connection);
294  virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
295 
297  virtual DtReflectedControlObjectList* reflectedEnvironmentProcessList() const;
298 
301  virtual DtReflectedControlObjectList* createReflectedControlObjectList(DtExerciseConn* exConn);
302 
309  virtual void registerInterfaceCallbacks();
310 
312  virtual const DtSimManager* simManager() const;
314  virtual DtSimManager* simManager();
315 
325  virtual void processCreateVrfObject(DtSimMessage* msg);
326 
333  virtual void processCreateVrfObject(DtIfCreateVrfObject ifCreateVrfObject);
334 
342  virtual void processModifyVrfObject(DtSimMessage* msg);
343 
350  virtual void processModifyVrfObject(DtIfModifyVrfObject modObj);
351 
354  virtual void processModifyVrfOverlay(DtSimMessage* msg);
357  virtual void processDeleteVrfObject(DtSimMessage* msg);
360  virtual void processDeleteVrfObjectById(DtSimMessage* msg);
363  virtual void processVrfObjectDeleted(DtSimMessage* msg);
366  virtual void processOrderOfBattleOp(DtSimMessage* msg);
369  virtual void processAutoReorganize(DtSimMessage* msg);
372  virtual void processAggregateAs(DtSimMessage* msg);
375  virtual void processSkipTask(DtSimMessage* msg);
376 
377 
382  virtual void processSetThresholds(DtSimMessage* msg);
383 
385  virtual void processCreateControlObject(DtSimMessage* msg);
386  virtual void processCreateEntity(DtSimMessage* msg);
387  virtual void processRemoveEntity(DtSimMessage* msg);
388  virtual void processRequestEntityName(DtSimMessage* msg);
389 
394  virtual void processEntityAddedCallback(DtReflectedExtEntity* entity);
395  virtual void processAggregateAddedCallback(DtReflectedExtAggregate* aggregate);
396 
399  virtual void processEntityRemovedCallback(DtReflectedExtEntity* entity);
400  virtual void processAggregateRemovedCallback(DtReflectedExtAggregate* aggregate);
401 
402  virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
403  virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
404  virtual void processDesignatorChangedCallback(DtReflectedDesignator * des);
405  DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
406 
408  virtual void processAggregateChanged(DtReflectedExtAggregate* aggregate);
409 
410  virtual void processEnvProcessAddedCallback(
411  DtReflectedEnvironmentProcess* envProcess);
412  virtual void processEnvProcessRemovedCallback(
413  DtReflectedEnvironmentProcess* envProcess);
414  virtual bool processEnvProcessDiscoveryCriteria(
415  DtReflectedEnvironmentProcess* envProcess);
416 
419  virtual void removeObjectSubordinates(DtVrfObject* object);
420 
423  virtual void queueObjectForRemoval(const DtEntityIdentifier& key);
424 
426  virtual void removeObjectsQueuedForRemoval();
427 
436  virtual void tick();
437 
439  virtual DtVrfObject* createAndInitVrfObject(
440  DtIfCreateVrfObject* creationInfo);
441 
442  virtual DtVrfObject* createAndInitVrfObject(
443  DtIfAggregateAs* aggInfo);
444 
446  virtual DtVrfObject* createAndInitVrfObject(
447  DtReflectedEntity* entity);
448 
449  virtual DtVrfObject* createAndInitVrfObject(
450  DtReflectedAggregate* aggregate,
451  int superType = DtObjectTypeAggregate);
452 
453  virtual DtVrfObject* createAndInitVrfObject(DtReflectedEnvironmentProcess* envProcess);
454 
464  virtual DtVrfObject* createAndInitVrfObject(
465  const DtObjectType& objectType,
466  bool publishLocalObject = true,
467  const DtString& objectName = DtString::nullString(),
468  const DtString& objectLabel = DtString::nullString(),
469  DtForceType forceType = DtForceOther,
470  const DtList* vertices = 0,
471  const DtTaitBryan* orientation = 0,
472  bool projection = false,
473  bool closedFigure = false,
474  const DtAppearance& appearance = DtAppearance::nullAppearance(),
475  const DtString& readerWriterName = DtString::nullString(),
476  DtReaderWriterRegistry* parentRegistry = 0,
477  bool createSubObjects = false,
478  DtVrfObjectUserInitFcn userInit = 0,
479  void* userInitData = 0,
480  bool organize = true,
481  const DtString& startingFormation = DtDefaultFormationString,
482  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
484 
492  virtual DtVrfObject* createAndInitVrfObject(
493  const DtObjectType& objectType,
494  bool publishLocalObject = true,
495  const DtString& objectName = DtString::nullString(),
496  const DtString& objectLabel = DtString::nullString(),
497  DtForceType forceType = DtForceOther,
498  const DtVector& position = DtVector::zero(),
499  const DtTaitBryan* orientation = 0,
500  bool projection = false,
501  bool closedFigure = false,
502  const DtAppearance& appearance = DtAppearance::nullAppearance(),
503  const DtString& readerWriterName = DtString::nullString(),
504  DtReaderWriterRegistry* parentRegistry = 0,
505  bool createSubObjects = false,
506  DtVrfObjectUserInitFcn userInitFcn = 0,
507  void* userInitData = 0,
508  bool organize = true,
509  const DtString& startingFormation = DtDefaultFormationString,
510  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
512 
520  virtual void createSubObjectsFromParameters(DtVrfObject* parent,
521  bool publishSubobjects);
522 
529  virtual DtVrfObject* createSubObjectFromParameterEntry(
530  const DtVrfSubObjectParameterEntry& entry, const DtVector& positionOffsetFromParent,
531  const DtVrfObject& parent,
532  const DtString& formationName,
533  bool publishSubObject);
534 
536  virtual bool readOrderOfBattleFile(const DtString & filename);
537  virtual bool writeOrderOfBattleFile(const DtString & filename);
541  virtual bool objectShouldBeSavedToOrderOfBattle(
542  const DtVrfObject* vrfObject);
543 
544  virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath,
545  const DtVariableBindingsList& variableBindings);
546 
549  static void tickCallback(void* args);
550 
554  virtual void addVrfObjectAboutToBeAddedCallback(
555  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
556  const DtObjectType& filter = DtObjectType::anyType(),
557  bool invertFilter = false);
558 
562  virtual void addVrfObjectAddedCallback(
563  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
564  const DtObjectType& filter = DtObjectType::anyType(),
565  bool invertFilter = false);
566 
570  virtual void addVrfObjectAboutToBeLoadedCallback(
571  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
572  const DtObjectType& filter = DtObjectType::anyType(),
573  bool invertFilter = false);
574 
575 
580  virtual void addVrfObjectAboutToBeRemovedCallback(
581  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
582  const DtObjectType& filter = DtObjectType::anyType(),
583  bool invertFilter = false);
584 
587  virtual void removeVrfObjectAboutToBeAddedCallback(
588  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
589  const DtObjectType& filter = DtObjectType::anyType(),
590  bool invertFilter = false);
591 
594  virtual void removeVrfObjectAboutToBeLoadedCallback(
595  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
596  const DtObjectType& filter = DtObjectType::anyType(),
597  bool invertFilter = false);
598 
601  virtual void removeVrfObjectAddedCallback(
602  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
603  const DtObjectType& filter = DtObjectType::anyType(),
604  bool invertFilter = false);
605 
608  virtual void removeVrfObjectAboutToBeRemovedCallback(
609  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
610  const DtObjectType& filter = DtObjectType::anyType(),
611  bool invertFilter = false);
612 
615  virtual void addObjectManagerAboutToRemoveAllCallback(
616  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
617 
620  virtual void removeObjectManagerAboutToRemoveAllCallback(
621  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
622 
624  virtual void addOrganizationManagerReadyCallback(
625  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
626 
628  virtual void removeOrganizationManagerReadyCallback(
629  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
630 
632  virtual void enableAutoReorganization();
633  virtual void disableAutoReorganization();
635  virtual bool autoReorganizeEnabled() const;
636 
638  virtual DtVrfObject* lookupTopLevelVrfObject(DtForceType forceType);
640  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType);
643  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType,
644  const DtString& name);
646  virtual DtString topLevelName(DtForceType forceType);
647 
655  virtual DtString nextName(const DtObjectType& objectType);
657  virtual DtString nextUnorganizedName();
658 
662  virtual unsigned int maxNameLengthForType(const DtObjectType& objectType);
663 
666  virtual void processOverlayOp(DtSimMessage* msg);
667  virtual bool readOverlayFile(const DtString& filename);
668 
671  virtual DtReflectedObject* lookupReflectedObject(
672  const DtGlobalObjectDesignator& globalId) const;
673 
675  virtual void rediscoverObjects();
676 
679  virtual void requestUpdatesForRemoteNonVrfObjects() const;
680 
683  virtual void objectNameChanged(const DtString& oldName,
684  const DtString& newName);
685 
687 
688  virtual void addObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
689  virtual void removeObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
691 
694  virtual bool addNameAlias(const DtString& aliasName, DtVrfObject* object);
695 
696  virtual void removeNameAlias(const DtString& alias);
697 
714  virtual DtVrfObject* aggregateAs(
715  const DtObjectType& aggregateType,
716  DtForceType force,
717  const DtVector& dbPosition,
718  DtReal heading,
719  DtList* subordinateNames = 0,
720  const DtString& aggregateName = DtString::nullString());
721 
725  virtual bool addSubordinatesToAggregate(DtVrfObject* object,
726  const DtList* subordinateNames, DtAggregateState desiredState = DtFullyDisaggregated);
727 
733  static void addSubordinatesToAggregateCompleteCallback(void* usr);
734 
735  virtual DtOrganizationManager* organizationManager();
736  virtual const DtOrganizationManager* organizationManager() const;
737 
740  virtual DtDIGuyCharacterDataManager * diGuyCharacterManager();
741  virtual const DtDIGuyCharacterDataManager * diGuyCharacterManager() const;
742 
744  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
745 
747  virtual unsigned objectCount() const;
748 
750  virtual DtVrfObject* lookup(const DtEntityIdentifier& key);
751  virtual const DtVrfObject* lookup(const DtEntityIdentifier& key) const;
752 
754  virtual DtVrfObject* lookupObjectByGlobalId(const DtGlobalObjectDesignator& globalId);
755  virtual const DtVrfObject* lookupObjectByGlobalId(
756  const DtGlobalObjectDesignator& globalId) const;
757 
759  virtual DtVrfObject* lookupObjectByName(const DtString& objectName);
760  virtual const DtVrfObject* lookupObjectByName(const DtString& objectName) const;
761 
763  virtual const DtSimulationAddress& simulationAddress() const;
764 
770  const DtSimObjectIterator& iterator() const;
771 
773  virtual bool createSimObjectList();
774 
777  virtual DtHashlist* hashlist() const;
778 
782  virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
783  virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
784 
789  static void entityAddedCallback(DtReflectedExtEntity* entity, void* userData);
790 
795  static void entityRemovedCallback(DtReflectedExtEntity* entity,
796  void* userData);
797 
802  static void aggregateAddedCallback(DtReflectedExtAggregate* entity,
803  void* userData);
804 
809  static void aggregateRemovedCallback(DtReflectedExtAggregate* entity,
810  void* userData);
811 
816  static void entityChangedCallback(DtReflectedExtEntity* entity,
817  void* userData);
818 
823  static void aggregateChangedCallback(DtReflectedExtAggregate* aggregate,
824  void* userData);
825 
827  virtual void processEntityChanged(DtReflectedExtEntity* entity);
828 
834  static bool entityDiscoveryCriteriaCallback(DtReflectedObject* entity,
835  void* userData);
836 
842  static bool aggregateDiscoveryCriteriaCallback(DtReflectedObject* aggregate,
843  void* userData);
844 
850  virtual bool processEntityDiscoveryCriteria(
851  DtReflectedEntity* entity);
852 
858  virtual bool processAggregateDiscoveryCriteria(
859  DtReflectedAggregate* aggregate);
860 
863  virtual DtReflectedDesignator * lookupLasedTargetByGlobalId(const DtGlobalObjectDesignator&
864  tgtGlobalId);
865 
869  virtual DtReflectedDesignator * lookupLasedTargetByDesignatorCode(const int code);
870 
874  virtual void createRemoteDesignatorsList(DtExerciseConn * exConn);
875 
876  DtReflectedDesignatorList* reflectedDesignatorList() const;
877 
878 
880  virtual DtVrfParameterDb* objectParametersDB() const;
881 
884  virtual void addSimObjectAboutToBeAddedCallback(
886  virtual void addSimObjectAddedCallback(
888  virtual void addSimObjectAboutToBeRemovedCallback(
890  virtual void addSimObjectAboutToBeLoadedCallback(
892 
896  virtual void addSimObjectAboutToBeAddedCallback(
897  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
898  const DtObjectType& filter = DtObjectType::anyType(),
899  bool invertFilter = false);
900 
904  virtual void addSimObjectAddedCallback(
905  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
906  const DtObjectType& filter = DtObjectType::anyType(),
907  bool invertFilter = false);
908 
912  virtual void addSimObjectAboutToBeRemovedCallback(
913  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
914  const DtObjectType& filter = DtObjectType::anyType(),
915  bool invertFilter = false);
916 
920  virtual void addSimObjectAboutToBeLoadedCallback(
921  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
922  const DtObjectType& filter = DtObjectType::anyType(),
923  bool invertFilter = false);
924 
927  virtual void removeSimObjectAboutToBeAddedCallback(
928  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
929  const DtObjectType& filter = DtObjectType::anyType(),
930  bool invertFilter = false);
931 
932  virtual void removeSimObjectAboutToBeRemovedCallback(
934 
937  virtual void removeSimObjectAddedCallback(
938  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
939  const DtObjectType& filter = DtObjectType::anyType(),
940  bool invertFilter = false);
941 
944  virtual void removeSimObjectAboutToBeLoadedCallback(
945  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
946  const DtObjectType& filter = DtObjectType::anyType(),
947  bool invertFilter = false);
948 
951  virtual void removeSimObjectAboutToBeAddedCallback(
953  virtual void removeSimObjectAddedCallback(
955  virtual void removeSimObjectAboutToBeLoadedCallback(
957 
960  virtual void removeSimObjectAboutToBeRemovedCallback(
961  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
962  const DtObjectType& filter = DtObjectType::anyType(),
963  bool invertFilter = false);
964 
968  virtual void invokeSimObjectAboutToBeAddedCallbacks(
969  DtVrfObject* simObject) const;
970 
974  virtual void invokeSimObjectAddedCallbacks(
975  DtVrfObject* simObject) const;
976 
980  virtual void invokeSimObjectAboutToBeRemovedCallbacks(
981  DtVrfObject* simObject) const;
982 
986  virtual void invokeSimObjectAboutToBeLoadedCallbacks(
987  DtVrfObject* simObject) const;
988 
990  virtual DtReflectedExtEntityList* reflectedEntityList() const;
991 
993  virtual DtReflectedExtAggregateList* reflectedAggregateList() const;
994 
998  virtual void setSimObjectType(const DtString& type);
999  virtual const DtString& simObjectType() const;
1001 
1003  virtual const DtEntityIdentifier& nextId();
1004 
1009  virtual DtString generateUniqueName(int maxLength, const DtString&
1010  root = "Object") const;
1011 
1014  virtual bool isLocal(const DtBaseEntityStateRepository& stateRep);
1015 
1019  static int aggregateSuperType(DtAggregateStateRepository* aggregate);
1020 
1025  virtual void objectsEmbarkedOn(DtVrfObjectStateRepository* vrfObjSR, std::list<DtString>& list,
1026  bool includePsuedoAggregates = true) const;
1027 
1032  static void designatorAddedCallback(DtReflectedDesignator * des,
1033  void * userData);
1034 
1039  static void designatorRemovedCallback(DtReflectedDesignator * des,
1040  void * userData);
1041 
1046  static void designatorChangedCallback(DtReflectedDesignator * des,
1047  void * userData);
1048 
1054  static DtBoolean designatorDiscoveryCriteriaCallback(DtReflectedObject * des,
1055  void * userData);
1056 
1059  virtual bool canSimulate() const;
1060 
1062  virtual void printReflectedObjectCounts() const;
1063 
1064 protected:
1066  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1067  virtual void invokeOrganizationManagerReadyCallbacks(const DtOrganizationManagerReadyCallbackInfo&);
1068 
1069 protected:
1072  virtual void rediscoverNonVRFEntities();
1073 
1077  virtual void remove(DtVrfObject* simObject);
1078  virtual DtVrfObject* remove(const DtEntityIdentifier& key);
1079 
1082  virtual void invokeObjectManagerAboutToRemoveAllCallbacks() const;
1083 
1086  virtual void onQueueObjectForRemoval(DtVrfObject* vrfObject);
1087 
1088 
1089  virtual const Coordinate_System* coordinateSystem() const;
1090  virtual Coordinate_System* coordinateSystem();
1091 
1092 protected:
1094  virtual DtObjectGeometricModelsManager* createObjectModelsManager() const;
1095 
1097  virtual DtVrfObjectPlanAdministrator* createPlanAdministrator();
1098 
1099 public:
1100  DtObjectGeometricModelsManager* objectModelsManager() const;
1101  void setTerrainDbFactory(DtTerrainDbFactory*);
1102  DtTerrainDbFactory* terrainDbFactory();
1103 
1104  virtual DtVrfObjectPlanAdministrator* planAdministrator();
1105 
1106  virtual DtSimInternalCommunicationManager* simInternalCommunicationManager();
1107 
1108 protected:
1110  virtual DtSimInternalCommunicationManager* createSimInternalCommunicationManager(
1111  DtSimManager* simMgr) const;
1112 
1113 protected:
1114 
1118  static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr);
1119  static void modifyVrfOverlayCallback(DtSimMessage* msg, void* usr);
1120  static void autoReorganizeCallback(DtSimMessage* msg, void* usr);
1121  static void skipTaskCallback(DtSimMessage* msg, void* usr);
1122  static void setThresholdsCallback(DtSimMessage* msg, void* usr);
1123 
1124 #if DT_SINGLE_STATE_UPDATE_MESSAGE
1125  static void vrfObjectStateUpdateCallback(DtSimMessage* msg, void* usr);
1126 #endif
1127 
1135  static void createVrfObjectCallback(DtSimMessage* msg, void* usr);
1136  static void deleteVrfObjectCallback(DtSimMessage* msg, void* usr);
1137  static void deleteVrfObjectByIdCallback(DtSimMessage* msg, void* usr);
1138  static void vrfObjectDeletedCallback(DtSimMessage* msg, void* usr);
1139  static void orderOfBattleOpCallback(DtSimMessage* msg, void* usr);
1140  static void aggregateAsCallback(DtSimMessage* msg, void* usr);
1141 
1146  static void createVrfObjectPostDrainCallback(void* usr);
1147  static void deleteVrfObjectPostDrainCallback(void* usr);
1148  static void deleteVrfObjectByIdPostDrainCallback(void* usr);
1149  static void vrfObjectDeletedPostDrainCallback(void* usr);
1150  static void orderOfBattleOpPostDrainCallback(void* usr);
1151  static void aggregateAsPostDrainCallback(void* usr);
1152 
1153  static void envProcessAddedCallback(
1154  DtReflectedEnvironmentProcess* envProcess, void* userData);
1155  static void envProcessRemovedCallback(
1156  DtReflectedEnvironmentProcess* envProcess, void* userData);
1157  static bool envProcessDiscoveryCriteria(
1158  DtReflectedObject* envProcess, void* userData);
1159 
1160  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo& info, void* usr);
1161 
1162 protected:
1163 
1166 
1169 
1172 
1178  static void postInitFromParamsCallback(DtVrfObject* vrfObject, void* usr);
1179 
1182  virtual DtCreateQueueEntry* createQueueEntryCreator(DtIfCreateVrfObject msg);
1183 
1186  virtual DtModifyQueueEntry* modifyQueueEntryCreator(DtIfModifyVrfObject msg);
1187 
1188 protected:
1191 
1193  DtHashlist* mySimObjectList;
1194 
1197 
1200 
1202  DtReflectedDesignatorList * myRemoteDesignatorsList;
1203 
1206 
1211 
1216 
1221 
1226 
1229 
1234 
1235  DtExerciseConn* myExerciseConn;
1236 
1239 
1241 
1246 
1248 
1252 
1255  typedef DtBoost::shared_ptr<DtCreateQueueEntry> DtCreateQueueEntryPtr;
1256  typedef std::list<DtCreateQueueEntryPtr> DtVrfObjectCreateQueue;
1258 
1261  typedef DtBoost::shared_ptr<DtModifyQueueEntry> DtModifyQueueEntryPtr;
1262  typedef std::list<DtModifyQueueEntryPtr> DtVrfObjectModifyQueue;
1264 
1267 
1269 
1271 
1273 
1274 #ifdef DtHLA
1275  DtHashlist* myGlobalIdHashlist;
1276 #endif
1277 
1280 
1282 
1284 
1286 
1288 
1290 
1292 
1295 
1297 
1299 
1300 private:
1301 
1302  std::vector<DtVrfObjectManagerCallbackInfo> myAboutToRemoveAllCallbackList;
1303 
1306 };
1307 
1309 {
1311 }
1312 
1314 {
1316 }
1317 
1318 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)