VR-Forces 4.3 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 
314  virtual DtReflectedControlObjectList* reflectedEnvironmentProcessList() const;
315 
318  virtual DtReflectedControlObjectList* createReflectedControlObjectList(DtExerciseConn* exConn);
319 
326  virtual void registerInterfaceCallbacks();
327 
329  virtual const DtSimManager* simManager() const;
331  virtual DtSimManager* simManager();
332 
342  virtual void processCreateVrfObject(DtSimMessage* msg);
343 
350  virtual void processCreateVrfObject(DtIfCreateVrfObject ifCreateVrfObject);
351 
359  virtual void processModifyVrfObject(DtSimMessage* msg);
360 
367  virtual void processModifyVrfObject(DtIfModifyVrfObject modObj);
368 
371  virtual void processModifyVrfOverlay(DtSimMessage* msg);
374  virtual void processDeleteVrfObject(DtSimMessage* msg);
377  virtual void processDeleteVrfObjectById(DtSimMessage* msg);
380  virtual void processVrfObjectDeleted(DtSimMessage* msg);
383  virtual void processAutoReorganize(DtSimMessage* msg);
386  virtual void processAggregateAs(DtSimMessage* msg);
389  virtual void processSkipTask(DtSimMessage* msg);
390 
391 
396  virtual void processSetThresholds(DtSimMessage* msg);
397 
402  virtual void processEntityAddedCallback(DtReflectedExtEntity* entity);
403  virtual void processAggregateAddedCallback(DtReflectedExtAggregate* aggregate);
404 
407  virtual void processEntityRemovedCallback(DtReflectedExtEntity* entity);
408  virtual void processAggregateRemovedCallback(DtReflectedExtAggregate* aggregate);
409 
410  virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
411  virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
412  virtual void processDesignatorChangedCallback(DtReflectedDesignator * des);
413  DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
414 
415  virtual void processActiveSonarAddedCallback(DtReflectedActiveSonar* des);
416  virtual void processActiveSonarRemovedCallback(DtReflectedActiveSonar* des);
417  virtual void processActiveSonarChangedCallback(DtReflectedActiveSonar* des);
418  DtBoolean processActiveSonarDiscoveryCriteria(DtReflectedActiveSonar* des);
419 
420  typedef std::list<DtReflectedActiveSonar*> ReflectedActiveSonars;
421  virtual ReflectedActiveSonars findActiveSonarsForHostEntity(
422  const DtVrfObject* host) const;
423 
424  virtual void processPropulsionNoiseAddedCallback(DtReflectedPropulsionNoise* des);
425  virtual void processPropulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* des);
426  virtual void processPropulsionNoiseChangedCallback(DtReflectedPropulsionNoise* des);
427  DtBoolean processPropulsionNoiseDiscoveryCriteria(DtReflectedPropulsionNoise* des);
428 
429  virtual bool hasEnabledActiveSonar(const DtVrfObject* host) const;
430 
431  virtual DtReflectedPropulsionNoise* propulsionNoiseForHost(const DtVrfObject* host) const;
432 
434  virtual void processAggregateChanged(DtReflectedExtAggregate* aggregate);
435 
436  virtual void processEnvProcessAddedCallback(
437  DtReflectedEnvironmentProcess* envProcess);
438  virtual void processEnvProcessRemovedCallback(
439  DtReflectedEnvironmentProcess* envProcess);
440  virtual bool processEnvProcessDiscoveryCriteria(
441  DtReflectedEnvironmentProcess* envProcess);
442 
445  virtual void removeObjectSubordinates(DtVrfObject* object);
446 
449  virtual void queueObjectForRemoval(const DtEntityIdentifier& key);
450 
452  virtual void removeObjectsQueuedForRemoval();
453 
462  virtual void tick();
463 
465  virtual DtVrfObject* createAndInitVrfObject(
466  DtIfCreateVrfObject* creationInfo);
467 
468  virtual DtVrfObject* createAndInitVrfObject(
469  DtIfAggregateAs* aggInfo);
470 
472  virtual DtVrfObject* createAndInitVrfObject(
473  DtReflectedEntity* entity);
474 
475  virtual DtVrfObject* createAndInitVrfObject(
476  DtReflectedAggregate* aggregate,
477  int superType = DtObjectTypeAggregate);
478 
479  virtual DtVrfObject* createAndInitVrfObject(DtReflectedEnvironmentProcess* envProcess);
480 
490  virtual DtVrfObject* createAndInitVrfObject(
491  const DtObjectType& objectType,
492  bool publishLocalObject = true,
493  const DtString& objectName = DtString::nullString(),
494  const DtString& objectLabel = DtString::nullString(),
495  DtForceType forceType = DtForceOther,
496  const DtList* vertices = 0,
497  const DtTaitBryan* orientation = 0,
498  bool projection = false,
499  bool closedFigure = false,
500  const DtAppearance& appearance = DtAppearance::nullAppearance(),
501  const DtString& readerWriterName = DtString::nullString(),
502  DtReaderWriterRegistry* parentRegistry = 0,
503  bool createSubObjects = false,
504  DtVrfObjectUserInitFcn userInit = 0,
505  void* userInitData = 0,
506  bool organize = true,
507  const DtString& startingFormation = DtDefaultFormationString,
508  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
510  unsigned long requestId = 0,
511  const DtString& overlayParent = "");
512 
520  virtual DtVrfObject* createAndInitVrfObject(
521  const DtObjectType& objectType,
522  bool publishLocalObject = true,
523  const DtString& objectName = DtString::nullString(),
524  const DtString& objectLabel = DtString::nullString(),
525  DtForceType forceType = DtForceOther,
526  const DtVector& position = DtVector::zero(),
527  const DtTaitBryan* orientation = 0,
528  bool projection = false,
529  bool closedFigure = false,
530  const DtAppearance& appearance = DtAppearance::nullAppearance(),
531  const DtString& readerWriterName = DtString::nullString(),
532  DtReaderWriterRegistry* parentRegistry = 0,
533  bool createSubObjects = false,
534  DtVrfObjectUserInitFcn userInitFcn = 0,
535  void* userInitData = 0,
536  bool organize = true,
537  const DtString& startingFormation = DtDefaultFormationString,
538  DtVrfObjectManager::DtAggregateCreationMode initialAggregateState =
540  unsigned long requestId = 0, const DtString& overlayParent = "");
541 
549  virtual void createSubObjectsFromParameters(DtVrfObject* parent,
550  bool publishSubobjects, unsigned long requestId, const DtString& overlayParent);
551 
558  virtual DtVrfObject* createSubObjectFromParameterEntry(
559  const DtVrfSubObjectParameterEntry& entry, const DtVector& positionOffsetFromParent,
560  const DtVrfObject& parent,
561  const DtString& formationName,
562  bool publishSubObject, unsigned long requestId = 0, const DtString& overlayParent = "");
563 
565  virtual bool readOrderOfBattleFile(const DtString & filename);
566  virtual bool writeOrderOfBattleFile(const DtString & filename);
570  virtual bool objectShouldBeSavedToOrderOfBattle(
571  const DtVrfObject* vrfObject);
572 
573  virtual DtlObjPtr getData(DtlObjPtr args,
574  const DtReaderWriter::SearchPaths& searchPaths,
575  const DtVariableBindingsList& variableBindings);
576 
579  static void tickCallback(void* args);
580 
584  virtual void addVrfObjectAboutToBeAddedCallback(
585  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
586  const DtObjectType& filter = DtObjectType::anyType(),
587  bool invertFilter = false);
588 
592  virtual void addVrfObjectAddedCallback(
593  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
594  const DtObjectType& filter = DtObjectType::anyType(),
595  bool invertFilter = false);
596 
600  virtual void addVrfObjectAboutToBeLoadedCallback(
601  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
602  const DtObjectType& filter = DtObjectType::anyType(),
603  bool invertFilter = false);
604 
605 
610  virtual void addVrfObjectAboutToBeRemovedCallback(
611  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
612  const DtObjectType& filter = DtObjectType::anyType(),
613  bool invertFilter = false);
614 
617  virtual void removeVrfObjectAboutToBeAddedCallback(
618  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
619  const DtObjectType& filter = DtObjectType::anyType(),
620  bool invertFilter = false);
621 
624  virtual void removeVrfObjectAboutToBeLoadedCallback(
625  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
626  const DtObjectType& filter = DtObjectType::anyType(),
627  bool invertFilter = false);
628 
631  virtual void removeVrfObjectAddedCallback(
632  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
633  const DtObjectType& filter = DtObjectType::anyType(),
634  bool invertFilter = false);
635 
638  virtual void removeVrfObjectAboutToBeRemovedCallback(
639  DtVrfObjectListActivityCallbackFcn fcn, void* usrData,
640  const DtObjectType& filter = DtObjectType::anyType(),
641  bool invertFilter = false);
642 
645  virtual void addObjectManagerAboutToRemoveAllCallback(
646  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
647 
650  virtual void removeObjectManagerAboutToRemoveAllCallback(
651  DtVrfObjectManagerCallbackFcn fcn, void* usrData);
652 
654  virtual void addOrganizationManagerReadyCallback(
655  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
656 
658  virtual void removeOrganizationManagerReadyCallback(
659  DtOrganizationManagerReadyCallbackFcn fcn, void* usrData);
660 
662  virtual void enableAutoReorganization();
663  virtual void disableAutoReorganization();
665  virtual bool autoReorganizeEnabled() const;
666 
668  virtual DtVrfObject* lookupTopLevelVrfObject(DtForceType forceType);
670  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType);
673  virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType,
674  const DtString& name);
676  virtual DtString topLevelName(DtForceType forceType);
677 
685  virtual DtString nextName(const DtObjectType& objectType);
687  virtual DtString nextUnorganizedName();
690  virtual DtString uniquifyName(const DtString& name, const DtObjectType& objectType);
691 
695  virtual unsigned int maxNameLengthForType(const DtObjectType& objectType);
696 
699  virtual DtReflectedObject* lookupReflectedObject(
700  const DtGlobalObjectDesignator& globalId) const;
701 
703  virtual void rediscoverObjects();
704 
707  virtual void requestUpdatesForRemoteNonVrfObjects() const;
708 
711  virtual void objectNameChanged(const DtString& oldName,
712  const DtString& newName);
713 
715 
716  virtual void addObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
717  virtual void removeObjectNameChangedCallback(DtVrfObjectNameChangedCallbackFcn fcn, void* usr);
719 
722  virtual bool addNameAlias(const DtString& aliasName, DtVrfObject* object);
723 
724  virtual void removeNameAlias(const DtString& alias);
725 
742  virtual DtVrfObject* aggregateAs(
743  const DtObjectType& aggregateType,
744  DtForceType force,
745  const DtVector& dbPosition,
746  DtReal heading,
747  DtList* subordinateNames = 0,
748  const DtString& aggregateName = DtString::nullString());
749 
754  virtual void setSimulationDateTimeBasedOnLocation(const DtVector& geocentricLocation, int timeOfDay);
755 
759  virtual bool addSubordinatesToAggregate(DtVrfObject* object,
760  const DtList* subordinateNames, DtAggregateState desiredState = DtFullyDisaggregated);
761 
767  static void addSubordinatesToAggregateCompleteCallback(void* usr);
768 
769  virtual DtOrganizationManager* organizationManager();
770  virtual const DtOrganizationManager* organizationManager() const;
771 
774  virtual DtDiGuyCharacterDataManager * diGuyCharacterManager();
775  virtual const DtDiGuyCharacterDataManager * diGuyCharacterManager() const;
776 
778  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
779 
781  virtual unsigned objectCount() const;
782 
784  virtual DtVrfObject* lookup(const DtEntityIdentifier& key);
785  virtual const DtVrfObject* lookup(const DtEntityIdentifier& key) const;
786 
788  virtual DtVrfObject* lookupObjectByGlobalId(const DtGlobalObjectDesignator& globalId);
789  virtual const DtVrfObject* lookupObjectByGlobalId(
790  const DtGlobalObjectDesignator& globalId) const;
791 
793  virtual DtVrfObject* lookupObjectByName(const DtString& objectName);
794  virtual const DtVrfObject* lookupObjectByName(const DtString& objectName) const;
795 
797  virtual const DtSimulationAddress& simulationAddress() const;
798 
804  const DtSimObjectIterator& iterator() const;
805 
807  virtual bool createSimObjectList();
808 
811  virtual DtHashlist* hashlist() const;
812 
816  virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
817  virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
818 
823  static void entityAddedCallback(DtReflectedExtEntity* entity, void* userData);
824 
829  static void entityRemovedCallback(DtReflectedExtEntity* entity,
830  void* userData);
831 
836  static void aggregateAddedCallback(DtReflectedExtAggregate* entity,
837  void* userData);
838 
843  static void aggregateRemovedCallback(DtReflectedExtAggregate* entity,
844  void* userData);
845 
850  static void entityChangedCallback(DtReflectedExtEntity* entity,
851  void* userData);
852 
857  static void aggregateChangedCallback(DtReflectedExtAggregate* aggregate,
858  void* userData);
859 
861  virtual void processEntityChanged(DtReflectedExtEntity* entity);
862 
868  static bool entityDiscoveryCriteriaCallback(DtReflectedObject* entity,
869  void* userData);
870 
876  static bool aggregateDiscoveryCriteriaCallback(DtReflectedObject* aggregate,
877  void* userData);
878 
884  virtual bool processEntityDiscoveryCriteria(
885  DtReflectedEntity* entity);
886 
892  virtual bool processAggregateDiscoveryCriteria(
893  DtReflectedAggregate* aggregate);
894 
897  virtual DtReflectedDesignator * lookupLasedTargetByGlobalId(const DtGlobalObjectDesignator&
898  tgtGlobalId);
899 
903  virtual DtReflectedDesignator* lookupLasedTargetByDesignatorCode(const int code);
904 
908  virtual void createRemoteDesignatorsList(DtExerciseConn* exConn);
909 
910  virtual void createRemoteActiveSonarList(DtExerciseConn* exConn);
911  virtual void createRemotePropulsionNoiseList(DtExerciseConn* exConn);
912 
913  DtReflectedDesignatorList* reflectedDesignatorList() const;
914 
915  DtReflectedActiveSonarList* reflectedActiveSonarList() const;
916  DtReflectedPropulsionNoiseList* reflectedPropulsionNoiseList() const;
917 
919  virtual DtVrfParameterDb* objectParametersDB() const;
920 
923  virtual void addSimObjectAboutToBeAddedCallback(
925  virtual void addSimObjectAddedCallback(
927  virtual void addSimObjectAboutToBeRemovedCallback(
929  virtual void addSimObjectAboutToBeLoadedCallback(
931 
935  virtual void addSimObjectAboutToBeAddedCallback(
936  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
937  const DtObjectType& filter = DtObjectType::anyType(),
938  bool invertFilter = false);
939 
943  virtual void addSimObjectAddedCallback(
944  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
945  const DtObjectType& filter = DtObjectType::anyType(),
946  bool invertFilter = false);
947 
951  virtual void addSimObjectAboutToBeRemovedCallback(
952  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
953  const DtObjectType& filter = DtObjectType::anyType(),
954  bool invertFilter = false);
955 
959  virtual void addSimObjectAboutToBeLoadedCallback(
960  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
961  const DtObjectType& filter = DtObjectType::anyType(),
962  bool invertFilter = false);
963 
966  virtual void removeSimObjectAboutToBeAddedCallback(
967  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
968  const DtObjectType& filter = DtObjectType::anyType(),
969  bool invertFilter = false);
970 
971  virtual void removeSimObjectAboutToBeRemovedCallback(
973 
976  virtual void removeSimObjectAddedCallback(
977  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
978  const DtObjectType& filter = DtObjectType::anyType(),
979  bool invertFilter = false);
980 
983  virtual void removeSimObjectAboutToBeLoadedCallback(
984  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
985  const DtObjectType& filter = DtObjectType::anyType(),
986  bool invertFilter = false);
987 
990  virtual void removeSimObjectAboutToBeAddedCallback(
992  virtual void removeSimObjectAddedCallback(
994  virtual void removeSimObjectAboutToBeLoadedCallback(
996 
999  virtual void removeSimObjectAboutToBeRemovedCallback(
1000  DtSimObjectListActivityCallbackFcn fcn, void* usrData,
1001  const DtObjectType& filter = DtObjectType::anyType(),
1002  bool invertFilter = false);
1003 
1007  virtual void invokeSimObjectAboutToBeAddedCallbacks(
1008  DtVrfObject* simObject) const;
1009 
1013  virtual void invokeSimObjectAddedCallbacks(
1014  DtVrfObject* simObject) const;
1015 
1019  virtual void invokeSimObjectAboutToBeRemovedCallbacks(
1020  DtVrfObject* simObject) const;
1021 
1025  virtual void invokeSimObjectAboutToBeLoadedCallbacks(
1026  DtVrfObject* simObject) const;
1027 
1029  virtual DtReflectedExtEntityList* reflectedEntityList() const;
1030 
1032  virtual DtReflectedExtAggregateList* reflectedAggregateList() const;
1033 
1037  virtual void setSimObjectType(const DtString& type);
1038  virtual const DtString& simObjectType() const;
1040 
1042  virtual const DtEntityIdentifier& nextId();
1043 
1048  virtual DtString generateUniqueName(int maxLength, const DtString&
1049  root = "Object") const;
1050 
1052  virtual void setRollUpRules(const DtAssembliesReaderWriter::RwRootNode&);
1053 
1055  virtual const DtAssembliesReaderWriter::RwRootNode& rollUpRules() const;
1056 
1058  virtual void setActivities(const DtRwActivities&);
1059 
1061  virtual const DtRwActivities& activities() const;
1062 
1065  virtual bool isLocal(const DtBaseEntityStateRepository& stateRep);
1066 
1070  static int aggregateSuperType(DtAggregateStateRepository* aggregate);
1071 
1076  virtual void objectsEmbarkedOn(DtVrfObjectStateRepository* vrfObjSR, std::list<DtString>& list,
1077  bool includePseudoAggregates = true) const;
1078 
1083  static void designatorAddedCallback(DtReflectedDesignator * des,
1084  void * userData);
1085 
1090  static void designatorRemovedCallback(DtReflectedDesignator * des,
1091  void * userData);
1092 
1097  static void designatorChangedCallback(DtReflectedDesignator * des,
1098  void * userData);
1099 
1105  static DtBoolean designatorDiscoveryCriteriaCallback(DtReflectedObject * des,
1106  void * userData);
1107 
1108  static void activeSonarAddedCallback(DtReflectedActiveSonar* activeSonar,
1109  void* userData);
1110  static void activeSonarRemovedCallback(DtReflectedActiveSonar* activeSonar,
1111  void* userData);
1112  static void activeSonarChangedCallback(DtReflectedActiveSonar* activeSonar,
1113  void* userData);
1114  static DtBoolean activeSonarDiscoveryCriteriaCallback(
1115  DtReflectedObject* activeSonar, void* userData);
1116 
1117  static void propulsionNoiseAddedCallback(DtReflectedPropulsionNoise* propNoise,
1118  void* userData);
1119  static void propulsionNoiseRemovedCallback(DtReflectedPropulsionNoise* propNoise,
1120  void* userData);
1121  static void propulsionNoiseChangedCallback(DtReflectedPropulsionNoise* propNoise,
1122  void* userData);
1123  static DtBoolean propulsionNoiseDiscoveryCriteriaCallback(
1124  DtReflectedObject* propNoise, void* userData);
1125 
1128  virtual bool canSimulate() const;
1129 
1131  virtual void printReflectedObjectCounts() const;
1132 
1133 protected:
1135  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1136  virtual void invokeOrganizationManagerReadyCallbacks(const DtOrganizationManagerReadyCallbackInfo&);
1137 
1138 protected:
1141  virtual void rediscoverNonVRFEntities();
1142 
1146  virtual void remove(DtVrfObject* simObject);
1147  virtual DtVrfObject* remove(const DtEntityIdentifier& key);
1148 
1151  virtual void invokeObjectManagerAboutToRemoveAllCallbacks() const;
1152 
1155  virtual void onQueueObjectForRemoval(DtVrfObject* vrfObject);
1156 
1157  virtual const Coordinate_System* coordinateSystem() const;
1158  virtual Coordinate_System* coordinateSystem();
1159 
1162  virtual void modifyInterfaceContentForNewObject(DtSimInterfaceContent*, DtVrfObject*, bool& isLocal) const;
1163 
1166  virtual std::list<DtVector> calculateFormationOffsetsBasedOnFootprints(const DtList&) const;
1167 
1169  virtual std::vector<Dt3dBoundingVolume> boundingVolumesOfChildren(const DtList& subObjects,
1170  int& totalLeafNodes) const;
1171 
1172 protected:
1174  virtual DtObjectGeometricModelsManager* createObjectModelsManager() const;
1175 
1177  virtual DtVrfObjectPlanAdministrator* createPlanAdministrator();
1178 
1179 public:
1180  DtObjectGeometricModelsManager* objectModelsManager() const;
1181  void setTerrainDbFactory(DtTerrainDbFactory*);
1182  DtTerrainDbFactory* terrainDbFactory();
1183 
1184  virtual DtVrfObjectPlanAdministrator* planAdministrator();
1185 
1186  virtual DtSimInternalCommunicationManager* simInternalCommunicationManager();
1187 
1188 protected:
1190  virtual DtSimInternalCommunicationManager* createSimInternalCommunicationManager(
1191  DtSimManager* simMgr) const;
1192 
1193 protected:
1194 
1198  static void modifyVrfObjectCallback(DtSimMessage* msg, void* usr);
1199  static void modifyVrfOverlayCallback(DtSimMessage* msg, void* usr);
1200  static void autoReorganizeCallback(DtSimMessage* msg, void* usr);
1201  static void skipTaskCallback(DtSimMessage* msg, void* usr);
1202  static void setThresholdsCallback(DtSimMessage* msg, void* usr);
1203 
1204 #if DT_SINGLE_STATE_UPDATE_MESSAGE
1205  static void vrfObjectStateUpdateCallback(DtSimMessage* msg, void* usr);
1206 #endif
1207 
1215  static void createVrfObjectCallback(DtSimMessage* msg, void* usr);
1216  static void deleteVrfObjectCallback(DtSimMessage* msg, void* usr);
1217  static void deleteVrfObjectByIdCallback(DtSimMessage* msg, void* usr);
1218  static void vrfObjectDeletedCallback(DtSimMessage* msg, void* usr);
1219  static void orderOfBattleOpCallback(DtSimMessage* msg, void* usr);
1220  static void aggregateAsCallback(DtSimMessage* msg, void* usr);
1221 
1223  static void extendedLabelsOperationCallback(DtSimMessage* msg, void* usr);
1224  virtual void processExtendedLabelsOperation(DtSimMessage*);
1225 
1227  static void requestActivitiesCallback(DtSimMessage* msg, void* usr);
1228  virtual void processRequestActivities(DtSimMessage*);
1229 
1234  static void createVrfObjectPostDrainCallback(void* usr);
1235  static void deleteVrfObjectPostDrainCallback(void* usr);
1236  static void deleteVrfObjectByIdPostDrainCallback(void* usr);
1237  static void vrfObjectDeletedPostDrainCallback(void* usr);
1238  static void aggregateAsPostDrainCallback(void* usr);
1239 
1240  static void envProcessAddedCallback(
1241  DtReflectedEnvironmentProcess* envProcess, void* userData);
1242  static void envProcessRemovedCallback(
1243  DtReflectedEnvironmentProcess* envProcess, void* userData);
1244  static bool envProcessDiscoveryCriteria(
1245  DtReflectedObject* envProcess, void* userData);
1246 
1247  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo& info, void* usr);
1248 
1249 protected:
1250 
1253 
1256 
1259 
1265  static void postInitFromParamsCallback(DtVrfObject* vrfObject, void* usr);
1266 
1269  virtual DtCreateQueueEntry* createQueueEntryCreator(DtIfCreateVrfObject msg);
1270 
1273  virtual DtModifyQueueEntry* modifyQueueEntryCreator(DtIfModifyVrfObject msg);
1274 
1275 protected:
1278 
1281 
1283  DtHashlist* mySimObjectList;
1284 
1287 
1290 
1293 
1294  DtReflectedActiveSonarList* myRemoteActiveSonarList;
1295  DtReflectedPropulsionNoiseList* myRemotePropulsionNoiseList;
1296 
1299 
1304 
1309 
1314 
1319 
1322 
1327 
1328  DtExerciseConn* myExerciseConn;
1329 
1332 
1334 
1339 
1341 
1345 
1348  typedef DtBoost::shared_ptr<DtCreateQueueEntry> DtCreateQueueEntryPtr;
1349  typedef std::list<DtCreateQueueEntryPtr> DtVrfObjectCreateQueue;
1351 
1354  typedef DtBoost::shared_ptr<DtModifyQueueEntry> DtModifyQueueEntryPtr;
1355  typedef std::list<DtModifyQueueEntryPtr> DtVrfObjectModifyQueue;
1357 
1360 
1361  DtReflectedControlObjectList* myRemoteEnvironmentalsList;
1362 
1364 
1366 
1367 #ifdef DtHLA
1368  DtHashlist* myGlobalIdHashlist;
1369 #endif
1370 
1373 
1375 
1376  const Coordinate_System* myCoordinateSystemPtr;
1377 
1379 
1381 
1383 
1385 
1388 
1390 
1392 
1394 
1397 
1398  //Incremented each time a callback list is invoked.
1399  //Decremented when done invoking callbacks.
1400  //Unsigned because invoke can be called from within
1401  //a callback.
1407  //@]
1408 
1409 private:
1410 
1411  std::vector<DtVrfObjectManagerCallbackInfo> myAboutToRemoveAllCallbackList;
1412 
1414  DtTerrainDbFactory* myTerrainDbFactory;
1415 };
1416 
1418 {
1420 }
1421 
1423 {
1425 }
1426 
1427 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)