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>
37 #define DT_SINGLE_STATE_UPDATE_MESSAGE 0
44 class DtReflectedObject;
45 class DtReflectedAggregate;
52 class DtSimObjectSubComponentTypes;
55 class DtBaseEntityStateRepository;
58 class DtVrfObjectManagerTickArguments;
59 class DtSimTickArguments;
64 class DtReflectedEnvironmentProcess;
67 class DtReflectedObject;
75 class DtReflectedDesignator;
77 class DtReflectedDesignatorList;
144 DtUseParameterDatabaseAggregateState = 0,
146 DtCreateDisaggregatedEntity
147 } DtAggregateCreationMode;
164 virtual void clearRemoteComponentAttachmentSystem();
168 virtual void createRemoteComponentAttachmentManager();
171 virtual bool initializeRemoteComponentAttachmentSystem(
const DtFilename& fromFile);
180 virtual bool create();
182 virtual bool createObjectNameHashlist();
185 virtual bool createGlobalIdHashlist();
193 virtual void createDIGuyCharacterManager(
const DtFilename & diGuyDataFile,
194 const DtFilename & diGuyAnimationsFile);
221 virtual DtVrfObject* lookupVrfObject(
const DtEntityIdentifier& key);
222 virtual const DtVrfObject* lookupVrfObject(
const DtEntityIdentifier& key)
const;
225 const DtGlobalObjectDesignator& globalId);
226 virtual const DtVrfObject* lookupVrfObjectByGlobalId(
227 const DtGlobalObjectDesignator& globalId)
const;
230 warnOnFailure =
true);
232 warnOnFailure =
true)
const;
234 virtual const DtVrfObject* lookupVrfObjectByEchelonIdString(
236 virtual DtVrfObject* lookupVrfObjectByEchelonIdString(
239 virtual const DtVrfObject* lookupVrfObjectByEchelonId(
247 virtual DtVrfObject * lookupVrfObjectByObjectId(
const DtObjectId &
id)
const;
253 virtual DtGlobalObjectDesignator lookupGlobalId(
const DtObjectId &
id)
const;
258 virtual DtObjectId lookupObjectId(
const DtGlobalObjectDesignator & globalId);
262 bool reevaluateFlag =
false, DtTime evaluationPeriod = 0);
266 bool invertFilter =
false)
const;
274 bool invertFilter =
false,
void* usrData = 0)
const;
278 virtual void removeAndDelete(
const DtString& objectName);
279 virtual void removeAndDelete(
const DtEntityIdentifier& key);
283 virtual void removeAndDeleteAllLocals();
287 virtual void removeAndDeleteAll();
293 virtual void setExerciseConnection(DtExerciseConn* connection);
294 virtual void createRemoteEnvironmentalsList(DtExerciseConn* exConn);
309 virtual void registerInterfaceCallbacks();
354 virtual void processModifyVrfOverlay(
DtSimMessage* msg);
360 virtual void processDeleteVrfObjectById(
DtSimMessage* msg);
363 virtual void processVrfObjectDeleted(
DtSimMessage* msg);
385 virtual void processCreateControlObject(
DtSimMessage* msg);
388 virtual void processRequestEntityName(
DtSimMessage* msg);
402 virtual void processDesignatorAddedCallback(DtReflectedDesignator * des);
403 virtual void processDesignatorRemovedCallback(DtReflectedDesignator * des);
404 virtual void processDesignatorChangedCallback(DtReflectedDesignator * des);
405 DtBoolean processDesignatorDiscoveryCriteria(DtReflectedDesignator * des);
410 virtual void processEnvProcessAddedCallback(
411 DtReflectedEnvironmentProcess* envProcess);
412 virtual void processEnvProcessRemovedCallback(
413 DtReflectedEnvironmentProcess* envProcess);
414 virtual bool processEnvProcessDiscoveryCriteria(
415 DtReflectedEnvironmentProcess* envProcess);
419 virtual void removeObjectSubordinates(
DtVrfObject*
object);
423 virtual void queueObjectForRemoval(
const DtEntityIdentifier& key);
426 virtual void removeObjectsQueuedForRemoval();
447 DtReflectedEntity* entity);
450 DtReflectedAggregate* aggregate,
453 virtual DtVrfObject* createAndInitVrfObject(DtReflectedEnvironmentProcess* envProcess);
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(),
477 bool createSubObjects =
false,
479 void* userInitData = 0,
480 bool organize =
true,
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(),
505 bool createSubObjects =
false,
507 void* userInitData = 0,
508 bool organize =
true,
520 virtual void createSubObjectsFromParameters(
DtVrfObject* parent,
521 bool publishSubobjects);
529 virtual DtVrfObject* createSubObjectFromParameterEntry(
533 bool publishSubObject);
536 virtual bool readOrderOfBattleFile(
const DtString & filename);
537 virtual bool writeOrderOfBattleFile(
const DtString & filename);
541 virtual bool objectShouldBeSavedToOrderOfBattle(
544 virtual DtlObjPtr
getData(DtlObjPtr args,
const DtFilename& searchPath,
549 static void tickCallback(
void* args);
554 virtual void addVrfObjectAboutToBeAddedCallback(
557 bool invertFilter =
false);
562 virtual void addVrfObjectAddedCallback(
565 bool invertFilter =
false);
570 virtual void addVrfObjectAboutToBeLoadedCallback(
573 bool invertFilter =
false);
580 virtual void addVrfObjectAboutToBeRemovedCallback(
583 bool invertFilter =
false);
587 virtual void removeVrfObjectAboutToBeAddedCallback(
590 bool invertFilter =
false);
594 virtual void removeVrfObjectAboutToBeLoadedCallback(
597 bool invertFilter =
false);
601 virtual void removeVrfObjectAddedCallback(
604 bool invertFilter =
false);
608 virtual void removeVrfObjectAboutToBeRemovedCallback(
611 bool invertFilter =
false);
615 virtual void addObjectManagerAboutToRemoveAllCallback(
620 virtual void removeObjectManagerAboutToRemoveAllCallback(
624 virtual void addOrganizationManagerReadyCallback(
628 virtual void removeOrganizationManagerReadyCallback(
632 virtual void enableAutoReorganization();
633 virtual void disableAutoReorganization();
635 virtual bool autoReorganizeEnabled()
const;
638 virtual DtVrfObject* lookupTopLevelVrfObject(DtForceType forceType);
640 virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType);
643 virtual DtVrfObject* createAndInitTopLevelVrfObject(DtForceType forceType,
646 virtual DtString topLevelName(DtForceType forceType);
657 virtual DtString nextUnorganizedName();
662 virtual unsigned int maxNameLengthForType(
const DtObjectType& objectType);
667 virtual bool readOverlayFile(
const DtString& filename);
671 virtual DtReflectedObject* lookupReflectedObject(
672 const DtGlobalObjectDesignator& globalId)
const;
675 virtual void rediscoverObjects();
679 virtual void requestUpdatesForRemoteNonVrfObjects()
const;
683 virtual void objectNameChanged(
const DtString& oldName,
696 virtual void removeNameAlias(
const DtString& alias);
719 DtList* subordinateNames = 0,
720 const DtString& aggregateName = DtString::nullString());
725 virtual bool addSubordinatesToAggregate(
DtVrfObject*
object,
726 const DtList* subordinateNames, DtAggregateState desiredState = DtFullyDisaggregated);
733 static void addSubordinatesToAggregateCompleteCallback(
void* usr);
747 virtual unsigned objectCount()
const;
750 virtual DtVrfObject* lookup(
const DtEntityIdentifier& key);
751 virtual const DtVrfObject* lookup(
const DtEntityIdentifier& key)
const;
754 virtual DtVrfObject* lookupObjectByGlobalId(
const DtGlobalObjectDesignator& globalId);
756 const DtGlobalObjectDesignator& globalId)
const;
763 virtual const DtSimulationAddress& simulationAddress()
const;
773 virtual bool createSimObjectList();
777 virtual DtHashlist* hashlist()
const;
782 virtual void createRemoteEntitiesList(DtExerciseConn* exConn);
783 virtual void createRemoteAggregatesList(DtExerciseConn* exConn);
834 static bool entityDiscoveryCriteriaCallback(DtReflectedObject* entity,
842 static bool aggregateDiscoveryCriteriaCallback(DtReflectedObject* aggregate,
850 virtual bool processEntityDiscoveryCriteria(
851 DtReflectedEntity* entity);
858 virtual bool processAggregateDiscoveryCriteria(
859 DtReflectedAggregate* aggregate);
863 virtual DtReflectedDesignator * lookupLasedTargetByGlobalId(
const DtGlobalObjectDesignator&
869 virtual DtReflectedDesignator * lookupLasedTargetByDesignatorCode(
const int code);
874 virtual void createRemoteDesignatorsList(DtExerciseConn * exConn);
876 DtReflectedDesignatorList* reflectedDesignatorList()
const;
884 virtual void addSimObjectAboutToBeAddedCallback(
886 virtual void addSimObjectAddedCallback(
888 virtual void addSimObjectAboutToBeRemovedCallback(
890 virtual void addSimObjectAboutToBeLoadedCallback(
896 virtual void addSimObjectAboutToBeAddedCallback(
899 bool invertFilter =
false);
904 virtual void addSimObjectAddedCallback(
907 bool invertFilter =
false);
912 virtual void addSimObjectAboutToBeRemovedCallback(
915 bool invertFilter =
false);
920 virtual void addSimObjectAboutToBeLoadedCallback(
923 bool invertFilter =
false);
927 virtual void removeSimObjectAboutToBeAddedCallback(
930 bool invertFilter =
false);
932 virtual void removeSimObjectAboutToBeRemovedCallback(
937 virtual void removeSimObjectAddedCallback(
940 bool invertFilter =
false);
944 virtual void removeSimObjectAboutToBeLoadedCallback(
947 bool invertFilter =
false);
951 virtual void removeSimObjectAboutToBeAddedCallback(
953 virtual void removeSimObjectAddedCallback(
955 virtual void removeSimObjectAboutToBeLoadedCallback(
960 virtual void removeSimObjectAboutToBeRemovedCallback(
963 bool invertFilter =
false);
968 virtual void invokeSimObjectAboutToBeAddedCallbacks(
974 virtual void invokeSimObjectAddedCallbacks(
980 virtual void invokeSimObjectAboutToBeRemovedCallbacks(
986 virtual void invokeSimObjectAboutToBeLoadedCallbacks(
998 virtual void setSimObjectType(
const DtString& type);
999 virtual const DtString& simObjectType()
const;
1003 virtual const DtEntityIdentifier& nextId();
1010 root =
"Object")
const;
1014 virtual bool isLocal(
const DtBaseEntityStateRepository& stateRep);
1026 bool includePsuedoAggregates =
true)
const;
1032 static void designatorAddedCallback(DtReflectedDesignator * des,
1039 static void designatorRemovedCallback(DtReflectedDesignator * des,
1046 static void designatorChangedCallback(DtReflectedDesignator * des,
1054 static DtBoolean designatorDiscoveryCriteriaCallback(DtReflectedObject * des,
1059 virtual bool canSimulate()
const;
1062 virtual void printReflectedObjectCounts()
const;
1072 virtual void rediscoverNonVRFEntities();
1078 virtual DtVrfObject*
remove(
const DtEntityIdentifier& key);
1082 virtual void invokeObjectManagerAboutToRemoveAllCallbacks()
const;
1086 virtual void onQueueObjectForRemoval(
DtVrfObject* vrfObject);
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);
1124 #if DT_SINGLE_STATE_UPDATE_MESSAGE
1125 static void vrfObjectStateUpdateCallback(
DtSimMessage* msg,
void* usr);
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);
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);
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);
1178 static void postInitFromParamsCallback(
DtVrfObject* vrfObject,
void* usr);