VR-Forces 4.3.1 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) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include "vrfutil/rwObjectType.h"
13 #include "vrfutil/rwList.h"
20 #include <vrfExtProtocol/objectTypeEnums.h>
22 #include "vrfutil/rwActivities.h"
24 
26 #include <vlpi/appearance.h>
27 #include <vlutil/vlFilename.h>
28 #include <vlutil/vlList.h>
29 #include <vlutil/vlConfig.h>
30 #include <vlutil/vlSmartPointers.h>
32 
34 #include <vector>
35 #include <list>
36 #include <set>
37 
39 #define DT_SINGLE_STATE_UPDATE_MESSAGE 0
40 
41 class DtTerrainDbFactory;
42 
43 class DtVrfObject;
44 class DtHashlist;
45 class DtExerciseConn;
46 class DtReflectedObject;
47 class DtReflectedAggregate;
49 class DtReflectedExtAggregate;
52 class DtVrfParameterDb;
54 class DtSimObjectSubComponentTypes;
55 class DtVertexList;
56 class DtAggregateStateRepository;
57 class DtBaseEntityStateRepository;
59 class DtSimManager;
60 class DtVrfObjectManagerTickArguments;
61 class DtSimTickArguments;
62 class DtSimMessage;
64 class DtIfAggregateAs;
66 class DtReflectedEnvironmentProcess;
67 class DtReflectedControlObjectList;
68 class DtReflectedObject;
69 class DtEchelonIdTable;
70 class DtEchelonId;
71 class Coordinate_System;
76 class DtReflectedDesignator;
79 class DtReflectedActiveSonar;
80 class DtReflectedActiveSonarList;
81 class DtReflectedPropulsionNoise;
82 class DtReflectedPropulsionNoiseList;
83 class DtCreateQueueEntry;
84 class DtModifyQueueEntry;
86 
89 typedef void (*DtSimObjectListActivityCallbackFcn)(DtVrfObject* simObject,
90  void* usr);
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 {
126 };
127 
130 
143 {
144 public:
146 
150  typedef enum
151  {
152  DtUseParameterDatabaseAggregateState = 0,
154  DtCreateDisaggregatedEntity
155  } DtAggregateCreationMode;
156 
157 public:
158 
160  DtVrfObjectManager(DtSimManager* simManager, int entityAdvisory = 100);
161 
167  virtual ~DtVrfObjectManager();
170 
172  virtual void clearRemoteComponentAttachmentSystem();
173 
176  virtual void createRemoteComponentAttachmentManager();
177 
179  virtual bool initializeRemoteComponentAttachmentSystem(const DtFilename& fromFile);
180 
182  DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager();
183  const DtRemoteComponentAttachmentManager* remoteComponentAttachmentManager() const;
185 
188  virtual bool create();
189 
190  virtual bool createObjectNameHashlist();
191 
192 #ifdef DtHLA
193  virtual bool createGlobalIdHashlist();
194 #endif
195 
198  virtual bool init();
199 
201  virtual void createDIGuyCharacterManager(const DtFilename & diGuyDataFile,
202  const DtFilename & diGuyAnimationsFile);
203 
213  virtual bool add(DtVrfObject* simObject);
214 
216  virtual void addPreprocessor(DtPreprocessor* simObject);
217  virtual void removePreprocessor(DtPreprocessor* simObject);
218 
219 private:
222  using DtRwList::add;
223  using DtRwList::remove;
224 
225 public:
226 
228  virtual void setParameterDatabase(DtVrfParameterDb* parameterDatabase);
229  virtual DtVrfParameterDb* parameterDatabase();
230 
233  virtual DtVrfObject* lookupVrfObject(const DtEntityIdentifier& key);
234  virtual const DtVrfObject* lookupVrfObject(const DtEntityIdentifier& key) const;
235 
236  virtual DtVrfObject* lookupVrfObjectByGlobalId(
237  const DtGlobalObjectDesignator& globalId);
238  virtual const DtVrfObject* lookupVrfObjectByGlobalId(
239  const DtGlobalObjectDesignator& globalId) const;
240 
241  virtual DtVrfObject* lookupVrfObjectByName(const DtString& name, bool
242  warnOnFailure = true);
243  virtual const DtVrfObject* lookupVrfObjectByName(const DtString& name, bool
244  warnOnFailure = true) const;
245 
246  virtual const DtVrfObject* lookupVrfObjectByEchelonIdString(
247  const DtString& echIdString) const;
248  virtual DtVrfObject* lookupVrfObjectByEchelonIdString(
249  const DtString& echIdString);
250 
251  virtual const DtVrfObject* lookupVrfObjectByEchelonId(
252  const DtEchelonId& echId) const;
253  virtual DtVrfObject* lookupVrfObjectByEchelonId(
254  const DtEchelonId& echId);
255 
259  virtual DtVrfObject * lookupVrfObjectByObjectId(const DtObjectId & id) const;
260 
261 
265  virtual DtGlobalObjectDesignator lookupGlobalId(const DtObjectId & id) const;
266 
270  virtual DtObjectId lookupObjectId(const DtGlobalObjectDesignator & globalId);
271 
273  virtual DtManagedObjectListConstPtr getList(const DtVrfObjectPredicate& predicate,
274  bool reevaluateFlag = false, DtTime evaluationPeriod = 0);
275 
276  virtual const DtVrfObjectFilterIterator& vrfIterator(
277  const DtObjectType& filter = DtObjectType::anyType(),
278  bool invertFilter = false) const;
279 
280  virtual const DtVrfObjectFilterIterator& vrfIterator(
281  const DtVrfObjectPredicate& predicate) const;
282 
285  virtual const DtVrfObjectFilterIterator& vrfIterator(DtFilterFcn filter,
286  bool invertFilter = false, void* usrData = 0)const;
287 
290  virtual void removeAndDelete(const DtString& objectName);
291  virtual void removeAndDelete(const DtEntityIdentifier& key);
292  virtual void removeAndDelete(DtVrfObject* object);
293 
295  virtual void removeAndDeleteAllLocals();
296 
299  virtual void removeAndDeleteAll();
300 
305  virtual void setExerciseConnection(DtExerciseConn* connection);
306  virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
307 
310  virtual void setPublishZeroVelocityWhenPaused(bool);
311  virtual bool publishZeroVelocityWhenPaused() const;
312 
316  virtual void setSetDeadReckoningAlgorithmToStaticOnPause(bool);
317  virtual bool setDeadReckoningAlgorithmToStaticOnPause() const;
318 
320  virtual DtReflectedControlObjectList* reflectedEnvironmentProcessList() const;
321 
324  virtual DtReflectedControlObjectList* createReflectedControlObjectList(DtExerciseConn* exConn);
325 
332  virtual void registerInterfaceCallbacks();
333 
335  virtual const DtSimManager* simManager() const;
337  virtual DtSimManager* simManager();
338 
348  virtual void processCreateVrfObject(DtSimMessage* msg);
349 
356  virtual void processCreateVrfObject(DtIfCreateVrfObject ifCreateVrfObject);
357 
365  virtual void processModifyVrfObject(DtSimMessage* msg);
366 
373  virtual void processModifyVrfObject(DtIfModifyVrfObject modObj);
374 
377  virtual void processModifyVrfOverlay(DtSimMessage* msg);
380  virtual void processDeleteVrfObject(DtSimMessage* msg);
383  virtual void processDeleteVrfObjectById(DtSimMessage* msg);
386  virtual void processVrfObjectDeleted(DtSimMessage* msg);
389  virtual void processAutoReorganize(DtSimMessage* msg);
392  virtual void processAggregateAs(DtSimMessage* msg);
395  virtual void processSkipTask(DtSimMessage* msg);
396 
397 
402  virtual void processSetThresholds(DtSimMessage* msg);
403 
408  virtual void processEntityAddedCallback(DtReflectedExtEntity* entity);
409  virtual void processAggregateAddedCallback(DtReflectedExtAggregate* aggregate);
410 
413  virtual void processEntityRemovedCallback(DtReflectedExtEntity* entity);
414  virtual void processAggregateRemovedCallback(DtReflectedExtAggregate* aggregate);
415 
416  virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
417  virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
418  virtual void processDesignatorChangedCallback(DtReflectedDesignator * des);
419  DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
420 
421  virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
422  virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
423  virtual void processActiveSonarChangedCallback(DtReflectedActiveSonar* des);
424  DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
425 
426  typedef std::list<DtReflectedActiveSonar*> ReflectedActiveSonars;
427  virtual ReflectedActiveSonars findActiveSonarsForHostEntity(
428  const DtVrfObject* host) const;
429 
430  virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
431  virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
432  virtual void processPropulsionNoiseChangedCallback(DtReflectedPropulsionNoise* des);
433  DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
434 
435  virtual bool hasEnabledActiveSonar(const DtVrfObject* host) const;
436 
437  virtual DtReflectedPropulsionNoise* propulsionNoiseForHost(const DtVrfObject* host) const;
438 
440  virtual void processAggregateChanged(DtReflectedExtAggregate* aggregate);
441 
442  virtual void processEnvProcessAddedCallback(
443  DtReflectedEnvironmentProcess* envProcess);
444  virtual void processEnvProcessRemovedCallback(
445  DtReflectedEnvironmentProcess* envProcess);
446  virtual bool processEnvProcessDiscoveryCriteria(
447  DtReflectedEnvironmentProcess* envProcess);
448 
451  virtual void removeObjectSubordinates(DtVrfObject* object);
452 
455  virtual void queueObjectForRemoval(const DtEntityIdentifier& key);
456 
458  virtual void removeObjectsQueuedForRemoval();
459 
468  virtual void tick();
469 
471  virtual DtVrfObject* createAndInitVrfObject(
472  DtIfCreateVrfObject* creationInfo);
473 
474  virtual DtVrfObject* createAndInitVrfObject(
475  DtIfAggregateAs* aggInfo);
476 
478  virtual DtVrfObject* createAndInitVrfObject(
479  DtReflectedEntity* entity);
480 
481  virtual DtVrfObject* createAndInitVrfObject(
482  DtReflectedAggregate* aggregate,
483  int superType = DtObjectTypeAggregate);
484 
485  virtual DtVrfObject* createAndInitVrfObject(DtReflectedEnvironmentProcess* envProcess);
486 
496  virtual DtVrfObject* createAndInitVrfObject(
497  const DtObjectType& objectType,
498  bool publishLocalObject = true,
499  const DtString& objectName = DtString::nullString(),
500  const DtString& objectLabel = DtString::nullString(),
501  DtForceType forceType = DtForceOther,
502  const DtList* vertices = 0,
503  const DtTaitBryan* orientation = 0,
504  bool projection = false,
505  bool closedFigure = false,
506  const DtAppearance& appearance = DtAppearance::nullAppearance(),
507  const DtString& readerWriterName = DtString::nullString(),
508  DtReaderWriterRegistry* parentRegistry = 0,
509  bool createSubObjects = false,
510  DtVrfObjectUserInitFcn userInit = 0,
511  void* userInitData = 0,
512  bool organize = true,
513  const DtString& startingFormation = DtDefaultFormationString,
514  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
516  unsigned long requestId = 0,
517  const DtString& overlayParent = "");
518 
526  virtual DtVrfObject* createAndInitVrfObject(
527  const DtObjectType& objectType,
528  bool publishLocalObject = true,
529  const DtString& objectName = DtString::nullString(),
530  const DtString& objectLabel = DtString::nullString(),
531  DtForceType forceType = DtForceOther,
532  const DtVector& position = DtVector::zero(),
533  const DtTaitBryan* orientation = 0,
534  bool projection = false,
535  bool closedFigure = false,
536  const DtAppearance& appearance = DtAppearance::nullAppearance(),
537  const DtString& readerWriterName = DtString::nullString(),
538  DtReaderWriterRegistry* parentRegistry = 0,
539  bool createSubObjects = false,
540  DtVrfObjectUserInitFcn userInitFcn = 0,
541  void* userInitData = 0,
542  bool organize = true,
543  const DtString& startingFormation = DtDefaultFormationString,
544  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
546  unsigned long requestId = 0, const DtString& overlayParent = "");
547 
555  virtual void createSubObjectsFromParameters(DtVrfObject* parent,
556  bool publishSubobjects, unsigned long requestId, const DtString& overlayParent);
557 
564  virtual DtVrfObject* createSubObjectFromParameterEntry(
565  const DtVrfSubObjectParameterEntry& entry, const DtVector& positionOffsetFromParent,
566  const DtVrfObject& parent,
567  const DtString& formationName,
568  bool publishSubObject, unsigned long requestId = 0, const DtString& overlayParent = "");
569 
571  virtual bool readOrderOfBattleFile(const DtString & filename);
572  virtual bool writeOrderOfBattleFile(const DtString & filename);
576  virtual bool objectShouldBeSavedToOrderOfBattle(
577  const DtVrfObject* vrfObject);
578 
579  virtual DtlObjPtr getData(DtlObjPtr args,
580  const DtReaderWriter::SearchPaths& searchPaths,
581  const DtVariableBindingsList& variableBindings);
582 
585  static void tickCallback(void* args);
586 
590  virtual void addVrfObjectAboutToBeAddedCallback(
591  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
592  const DtObjectType& filter = DtObjectType::anyType(),
593  bool invertFilter = false);
594 
598  virtual void addVrfObjectAddedCallback(
599  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
600  const DtObjectType& filter = DtObjectType::anyType(),
601  bool invertFilter = false);
602 
606  virtual void addVrfObjectAboutToBeLoadedCallback(
607  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
608  const DtObjectType& filter = DtObjectType::anyType(),
609  bool invertFilter = false);
610 
611 
616  virtual void addVrfObjectAboutToBeRemovedCallback(
617  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
618  const DtObjectType& filter = DtObjectType::anyType(),
619  bool invertFilter = false);
620 
623  virtual void removeVrfObjectAboutToBeAddedCallback(
624  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
625  const DtObjectType& filter = DtObjectType::anyType(),
626  bool invertFilter = false);
627 
630  virtual void removeVrfObjectAboutToBeLoadedCallback(
631  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
632  const DtObjectType& filter = DtObjectType::anyType(),
633  bool invertFilter = false);
634 
637  virtual void removeVrfObjectAddedCallback(
638  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
639  const DtObjectType& filter = DtObjectType::anyType(),
640  bool invertFilter = false);
641 
644  virtual void removeVrfObjectAboutToBeRemovedCallback(
645  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
646  const DtObjectType& filter = DtObjectType::anyType(),
647  bool invertFilter = false);
648 
651  virtual void addObjectManagerAboutToRemoveAllCallback(
652  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
653 
656  virtual void removeObjectManagerAboutToRemoveAllCallback(
657  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
658 
660  virtual void addOrganizationManagerReadyCallback(
661  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
662 
664  virtual void removeOrganizationManagerReadyCallback(
665  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
666 
668  virtual void enableAutoReorganization();
669  virtual void disableAutoReorganization();
671  virtual bool autoReorganizeEnabled() const;
672 
674  virtual DtVrfObject* lookupTopLevelVrfObject(DtForceType forceType);
676  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType);
679  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType,
680  const DtString& name);
682  virtual DtString topLevelName(DtForceType forceType);
683 
691  virtual DtString nextName(const DtObjectType& objectType);
693  virtual DtString nextUnorganizedName();
696  virtual DtString uniquifyName(const DtString& name, const DtObjectType& objectType);
697 
701  virtual unsigned int maxNameLengthForType(const DtObjectType& objectType);
702 
705  virtual DtReflectedObject* lookupReflectedObject(
706  const DtGlobalObjectDesignator& globalId) const;
707 
709  virtual void rediscoverObjects();
710 
713  virtual void requestUpdatesForRemoteNonVrfObjects() const;
714 
717  virtual void objectNameChanged(const DtString& oldName,
718  const DtString& newName);
719 
721 
722  virtual void addObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
723  virtual void removeObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
725 
728  virtual bool addNameAlias(const DtString& aliasName, DtVrfObject* object);
729 
730  virtual void removeNameAlias(const DtString& alias);
731 
748  virtual DtVrfObject* aggregateAs(
749  const DtObjectType& aggregateType,
750  DtForceType force,
751  const DtVector& dbPosition,
752  DtReal heading,
753  DtList* subordinateNames = 0,
754  const DtString& aggregateName = DtString::nullString());
755 
760  virtual void setSimulationDateTimeBasedOnLocation(const DtVector& geocentricLocation, int timeOfDay);
761 
765  virtual bool addSubordinatesToAggregate(DtVrfObject* object,
766  const DtList* subordinateNames, DtAggregateState desiredState = DtFullyDisaggregated);
767 
773  static void addSubordinatesToAggregateCompleteCallback(void* usr);
774 
775  virtual DtOrganizationManager* organizationManager();
776  virtual const DtOrganizationManager* organizationManager() const;
777 
780  virtual DtDiGuyCharacterDataManager * diGuyCharacterManager();
781  virtual const DtDiGuyCharacterDataManager * diGuyCharacterManager() const;
782 
784  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
785 
787  virtual unsigned objectCount() const;
788 
790  virtual DtVrfObject* lookup(const DtEntityIdentifier& key);
791  virtual const DtVrfObject* lookup(const DtEntityIdentifier& key) const;
792 
794  virtual DtVrfObject* lookupObjectByGlobalId(const DtGlobalObjectDesignator& globalId);
795  virtual const DtVrfObject* lookupObjectByGlobalId(
796  const DtGlobalObjectDesignator& globalId) const;
797 
799  virtual DtVrfObject* lookupObjectByName(const DtString& objectName);
800  virtual const DtVrfObject* lookupObjectByName(const DtString& objectName) const;
801 
803  virtual const DtSimulationAddress& simulationAddress() const;
804 
810  const DtSimObjectIterator& iterator() const;
811 
813  virtual bool createSimObjectList();
814 
817  virtual DtHashlist* hashlist() const;
818 
822  virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
823  virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
824 
829  static void entityAddedCallback(DtReflectedExtEntity* entity, void* userData);
830 
835  static void entityRemovedCallback(DtReflectedExtEntity* entity,
836  void* userData);
837 
842  static void aggregateAddedCallback(DtReflectedExtAggregate* entity,
843  void* userData);
844 
849  static void aggregateRemovedCallback(DtReflectedExtAggregate* entity,
850  void* userData);
851 
856  static void entityChangedCallback(DtReflectedExtEntity* entity,
857  void* userData);
858 
863  static void aggregateChangedCallback(DtReflectedExtAggregate* aggregate,
864  void* userData);
865 
867  virtual void processEntityChanged(DtReflectedExtEntity* entity);
868 
874  static bool entityDiscoveryCriteriaCallback(DtReflectedObject* entity,
875  void* userData);
876 
882  static bool aggregateDiscoveryCriteriaCallback(DtReflectedObject* aggregate,
883  void* userData);
884 
890  virtual bool processEntityDiscoveryCriteria(
891  DtReflectedEntity* entity);
892 
898  virtual bool processAggregateDiscoveryCriteria(
899  DtReflectedAggregate* aggregate);
900 
903  virtual DtReflectedDesignator * lookupLasedTargetByGlobalId(const DtGlobalObjectDesignator&
904  tgtGlobalId);
905 
909  virtual DtReflectedDesignator* lookupLasedTargetByDesignatorCode(const int code);
910 
914  virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
915 
916  virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
917  virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
918 
919  DtReflectedDesignatorList* reflectedDesignatorList() const;
920 
921  DtReflectedActiveSonarList* reflectedActiveSonarList() const;
922  DtReflectedPropulsionNoiseList* reflectedPropulsionNoiseList() const;
923 
925  virtual DtVrfParameterDb* objectParametersDB() const;
926 
929  virtual void addSimObjectAboutToBeAddedCallback(
931  virtual void addSimObjectAddedCallback(
933  virtual void addSimObjectAboutToBeRemovedCallback(
935  virtual void addSimObjectAboutToBeLoadedCallback(
937 
941  virtual void addSimObjectAboutToBeAddedCallback(
942  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
943  const DtObjectType& filter = DtObjectType::anyType(),
944  bool invertFilter = false);
945 
949  virtual void addSimObjectAddedCallback(
950  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
951  const DtObjectType& filter = DtObjectType::anyType(),
952  bool invertFilter = false);
953 
957  virtual void addSimObjectAboutToBeRemovedCallback(
958  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
959  const DtObjectType& filter = DtObjectType::anyType(),
960  bool invertFilter = false);
961 
965  virtual void addSimObjectAboutToBeLoadedCallback(
966  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
967  const DtObjectType& filter = DtObjectType::anyType(),
968  bool invertFilter = false);
969 
972  virtual void removeSimObjectAboutToBeAddedCallback(
973  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
974  const DtObjectType& filter = DtObjectType::anyType(),
975  bool invertFilter = false);
976 
977  virtual void removeSimObjectAboutToBeRemovedCallback(
979 
982  virtual void removeSimObjectAddedCallback(
983  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
984  const DtObjectType& filter = DtObjectType::anyType(),
985  bool invertFilter = false);
986 
989  virtual void removeSimObjectAboutToBeLoadedCallback(
990  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
991  const DtObjectType& filter = DtObjectType::anyType(),
992  bool invertFilter = false);
993 
996  virtual void removeSimObjectAboutToBeAddedCallback(
998  virtual void removeSimObjectAddedCallback(
1000  virtual void removeSimObjectAboutToBeLoadedCallback(
1001  const DtSimObjectListActivityCallbackInfo& cbInfo);
1002 
1005  virtual void removeSimObjectAboutToBeRemovedCallback(
1006  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1007  const DtObjectType& filter = DtObjectType::anyType(),
1008  bool invertFilter = false);
1009 
1013  virtual void invokeSimObjectAboutToBeAddedCallbacks(
1014  DtVrfObject* simObject) const;
1015 
1019  virtual void invokeSimObjectAddedCallbacks(
1020  DtVrfObject* simObject) const;
1021 
1025  virtual void invokeSimObjectAboutToBeRemovedCallbacks(
1026  DtVrfObject* simObject) const;
1027 
1031  virtual void invokeSimObjectAboutToBeLoadedCallbacks(
1032  DtVrfObject* simObject) const;
1033 
1035  virtual DtReflectedExtEntityList* reflectedEntityList() const;
1036 
1038  virtual DtReflectedExtAggregateList* reflectedAggregateList() const;
1039 
1043  virtual void setSimObjectType(const DtString& type);
1044  virtual const DtString& simObjectType() const;
1046 
1048  virtual const DtEntityIdentifier& nextId();
1049 
1054  virtual DtString generateUniqueName(int maxLength, const DtString&
1055  root = "Object") const;
1056 
1058  virtual void setRollUpRules(const DtAssembliesReaderWriter::RwRootNode&);
1059 
1061  virtual const DtAssembliesReaderWriter::RwRootNode& rollUpRules() const;
1062 
1064  virtual void setActivities(const DtRwActivities&);
1065 
1067  virtual const DtRwActivities& activities() const;
1068 
1071  virtual bool isLocal(const DtBaseEntityStateRepository& stateRep);
1072 
1076  static int aggregateSuperType(DtAggregateStateRepository* aggregate);
1077 
1082  virtual void objectsEmbarkedOn(DtVrfObjectStateRepository* vrfObjSR, std::list<DtString>& list,
1083  bool includePseudoAggregates = true) const;
1084 
1089  static void designatorAddedCallback(DtReflectedDesignator * des,
1090  void * userData);
1091 
1096  static void designatorRemovedCallback(DtReflectedDesignator * des,
1097  void * userData);
1098 
1103  static void designatorChangedCallback(DtReflectedDesignator * des,
1104  void * userData);
1105 
1111  static DtBoolean designatorDiscoveryCriteriaCallback(DtReflectedObject * des,
1112  void * userData);
1113 
1114  static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
1115  void* userData);
1116  static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
1117  void* userData);
1118  static void activeSonarChangedCallback(DtReflectedActiveSonar* activeSonar,
1119  void* userData);
1120  static DtBoolean activeSonarDiscoveryCriteriaCallback(
1121  DtReflectedObject* activeSonar, void* userData);
1122 
1123  static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
1124  void* userData);
1125  static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
1126  void* userData);
1127  static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
1128  void* userData);
1129  static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
1130  DtReflectedObject* propNoise, void* userData);
1131 
1134  virtual bool canSimulate() const;
1135 
1137  virtual void printReflectedObjectCounts() const;
1138 
1139 protected:
1141  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1142  virtual void invokeOrganizationManagerReadyCallbacks(const DtOrganizationManagerReadyCallbackInfo&);
1143 
1144 protected:
1147  virtual void rediscoverNonVRFEntities();
1148 
1152  virtual void remove(DtVrfObject* simObject);
1153  virtual DtVrfObject* remove(const DtEntityIdentifier& key);
1154 
1157  virtual void invokeObjectManagerAboutToRemoveAllCallbacks() const;
1158 
1161  virtual void onQueueObjectForRemoval(DtVrfObject* vrfObject);
1162 
1163  virtual const Coordinate_System* coordinateSystem() const;
1164  virtual Coordinate_System* coordinateSystem();
1165 
1168  virtual void modifyInterfaceContentForNewObject(DtSimInterfaceContent*, DtVrfObject*, bool& isLocal) const;
1169 
1172  virtual std::list<DtVector> calculateFormationOffsetsBasedOnFootprints(const DtList&) const;
1173 
1175  virtual std::vector<Dt3dBoundingVolume> boundingVolumesOfChildren(const DtList& subObjects,
1176  int& totalLeafNodes) const;
1177 
1178 protected:
1180  virtual DtObjectGeometricModelsManager* createObjectModelsManager() const;
1181 
1183  virtual DtVrfObjectPlanAdministrator* createPlanAdministrator();
1184 
1185 public:
1186  DtObjectGeometricModelsManager* objectModelsManager() const;
1187  void setTerrainDbFactory(DtTerrainDbFactory*);
1188  DtTerrainDbFactory* terrainDbFactory();
1189 
1190  virtual DtVrfObjectPlanAdministrator* planAdministrator();
1191 
1192  virtual DtSimInternalCommunicationManager* simInternalCommunicationManager();
1193 
1194 protected:
1196  virtual DtSimInternalCommunicationManager* createSimInternalCommunicationManager(
1197  DtSimManager* simMgr) const;
1198 
1199 protected:
1200 
1204  static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr);
1205  static void modifyVrfOverlayCallback(DtSimMessage* msg, void* usr);
1206  static void autoReorganizeCallback(DtSimMessage* msg, void* usr);
1207  static void skipTaskCallback(DtSimMessage* msg, void* usr);
1208  static void setThresholdsCallback(DtSimMessage* msg, void* usr);
1209 
1210 #if DT_SINGLE_STATE_UPDATE_MESSAGE
1211  static void vrfObjectStateUpdateCallback(DtSimMessage* msg, void* usr);
1212 #endif
1213 
1221  static void createVrfObjectCallback(DtSimMessage* msg, void* usr);
1222  static void deleteVrfObjectCallback(DtSimMessage* msg, void* usr);
1223  static void deleteVrfObjectByIdCallback(DtSimMessage* msg, void* usr);
1224  static void vrfObjectDeletedCallback(DtSimMessage* msg, void* usr);
1225  static void orderOfBattleOpCallback(DtSimMessage* msg, void* usr);
1226  static void aggregateAsCallback(DtSimMessage* msg, void* usr);
1227 
1229  static void extendedLabelsOperationCallback(DtSimMessage* msg, void* usr);
1230  virtual void processExtendedLabelsOperation(DtSimMessage*);
1231 
1233  static void requestActivitiesCallback(DtSimMessage* msg, void* usr);
1234  virtual void processRequestActivities(DtSimMessage*);
1235 
1240  static void createVrfObjectPostDrainCallback(void* usr);
1241  static void deleteVrfObjectPostDrainCallback(void* usr);
1242  static void deleteVrfObjectByIdPostDrainCallback(void* usr);
1243  static void vrfObjectDeletedPostDrainCallback(void* usr);
1244  static void aggregateAsPostDrainCallback(void* usr);
1245 
1246  static void envProcessAddedCallback(
1247  DtReflectedEnvironmentProcess* envProcess, void* userData);
1248  static void envProcessRemovedCallback(
1249  DtReflectedEnvironmentProcess* envProcess, void* userData);
1250  static bool envProcessDiscoveryCriteria(
1251  DtReflectedObject* envProcess, void* userData);
1252 
1253  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo& info, void* usr);
1254 
1255 protected:
1256 
1259 
1262 
1265 
1271  static void postInitFromParamsCallback(DtVrfObject* vrfObject, void* usr);
1272 
1275  virtual DtCreateQueueEntry* createQueueEntryCreator(DtIfCreateVrfObject msg);
1276 
1279  virtual DtModifyQueueEntry* modifyQueueEntryCreator(DtIfModifyVrfObject msg);
1280 
1281 protected:
1284 
1287 
1289  DtHashlist* mySimObjectList;
1290 
1293 
1296 
1299 
1300  DtReflectedActiveSonarList* myRemoteActiveSonarList;
1301  DtReflectedPropulsionNoiseList* myRemotePropulsionNoiseList;
1302 
1305 
1310 
1315 
1320 
1325 
1328 
1333 
1334  DtExerciseConn* myExerciseConn;
1335 
1338 
1340 
1345 
1347 
1351 
1354  typedef DtBoost::shared_ptr<DtCreateQueueEntry> DtCreateQueueEntryPtr;
1355  typedef std::list<DtCreateQueueEntryPtr> DtVrfObjectCreateQueue;
1357 
1360  typedef DtBoost::shared_ptr<DtModifyQueueEntry> DtModifyQueueEntryPtr;
1361  typedef std::list<DtModifyQueueEntryPtr> DtVrfObjectModifyQueue;
1363 
1366 
1367  DtReflectedControlObjectList* myRemoteEnvironmentalsList;
1368 
1370 
1372 
1373 #ifdef DtHLA
1374  DtHashlist* myGlobalIdHashlist;
1375 #endif
1376 
1379 
1381 
1382  const Coordinate_System* myCoordinateSystemPtr;
1383 
1385 
1387 
1389 
1391 
1394 
1396 
1398 
1400 
1404 
1405  //Incremented each time a callback list is invoked.
1406  //Decremented when done invoking callbacks.
1407  //Unsigned because invoke can be called from within
1408  //a callback.
1414  //@]
1415 
1416 private:
1417 
1418  std::vector<DtVrfObjectManagerCallbackInfo> myAboutToRemoveAllCallbackList;
1419 
1421  DtTerrainDbFactory* myTerrainDbFactory;
1422 };
1423 
1425 {
1427 }
1428 
1430 {
1432 }
1433 
1434 

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)