17 #include <vlutil/vlFilename.h>
18 #include <vlutil/vlTime.h>
19 #include <vl/hostStructs.h>
21 #include <vlutil/vlPrint.h>
31 #include <boost/unordered_set.hpp>
60 class DtJoyDeviceManager;
63 class DtCustomReportManager;
117 DtCgf(
const DtSimulationAddress& addr, DtU32 sessionId = 1,
const DtU32& capabilities = 0xffff);
143 int entityAdvisory = 100);
160 virtual void sendFinalStatus();
167 virtual bool importScenarioDescriptionFile(
const DtFilename& file,
const DtString& format,
168 const std::map<std::string, std::string>& importData);
173 virtual DtString exportScenarioDescriptionFile(
const DtFilename& file,
const DtString& format,
174 const std::map<std::string, std::string>& exportData);
177 virtual void setAppDataDir(
const DtString&);
178 virtual DtFilename appDataDir()
const;
181 virtual void setUserDataDir(
const DtString&);
182 virtual DtFilename userDataDir()
const;
185 virtual void setDataDir(
const DtString&);
186 virtual DtFilename
dataDir()
const;
191 virtual bool loadScenario(
const DtFilename& name,
int scenarioRunId = 0,
192 bool isOrbatEnabled =
false,
bool createGlobalEnv =
false,
193 bool createGlobalDynamicTerrain =
false);
201 virtual bool loadScenario(
const DtScenario& scenario,
int scenarioRunId = 0,
202 bool isOrbatEnabled =
false,
bool createGlobalEnv =
false,
203 bool createGlobalDynamicTerrain =
false);
212 virtual void clearSimulationObjects();
216 virtual bool importScenario(
const DtScenario&);
217 virtual bool importScenario(
const DtFilename&);
225 virtual bool newScenario(
const DtFilename& dbname =
226 DtFilename::nullFilename(),
const DtFilename& simulationModelSet =
227 DtFilename::nullFilename());
233 virtual void sendScenarioStatusMessage();
238 virtual bool saveScenario(
const DtFilename& savename,
bool saveAsSip =
false);
245 virtual void rollbackToSimTime(
double simTime);
249 virtual void takeSnapshot(
bool makeBase);
253 virtual bool saveSnapshot(
const DtFilename& saveFolder,
259 virtual bool saveSimulationObjectGroup(DtFilename saveFolder,
const DtString& groupName,
260 int flags, boost::unordered_set<DtUUID>& uuidsSaved,
bool& savAsZipFile);
267 virtual bool createSimulationObjectGroup(
const DtString& group,
int flags,
int force,
const DtVector& geocentricLocation,
268 double offsetRotation,
bool storedInZipFile =
false);
274 virtual void closeScenario(
const DtFilename& terrainToOpen =
"",
bool forceCloseAll =
false);
280 virtual bool loadAdditionalObjectParameters(
const DtFilename& paramsFileName,
288 virtual void pause();
295 virtual void rewind(
int scenarioRunId = 0);
298 virtual void setRejectMismatchedScenarioMessages(
bool);
299 virtual bool rejectMismatchedScenarioMessages()
const;
306 virtual void setForceParameterDbReload(
bool reload);
307 virtual bool forceParameterDbReload()
const;
314 virtual void setEnableResourceMonitor(
bool b);
315 virtual bool isResourceMonitorEnabled()
const;
327 virtual void setSmsValidationEnabled(
bool b);
341 virtual const DtFilename& defaultTerrainDirectory();
342 virtual void setDefaultTerrainDirectory(
const DtFilename& directory);
353 virtual const DtFilename& defaultSimulationModelSetFilename();
354 virtual void setDefaultSimulationModelSetFilename(
const DtFilename&
filename);
359 virtual void setUseDIGuy(
bool diguy);
360 virtual bool useDIGuy()
const;
367 virtual const DtFilename& diGuyAnimationsFilename();
368 virtual void setDIGuyAnimationsFilename(
const DtFilename&
filename);
373 virtual void setMsdlSidcMappingFile(
const DtFilename&);
374 virtual const DtFilename& msdlSidcMappingFile()
const;
379 virtual void setCountryCodesMappingFile(
const DtFilename&);
380 virtual const DtFilename& countryCodesMappingFile()
const;
393 virtual void deleteObject(
const DtUUID& name,
bool andRemoveFromOrbat =
true)
const;
397 virtual void deleteObject(
const DtEntityIdentifier& objectIdentifier,
bool andRemoveFromOrbat =
true)
const;
416 const DtString& uniqueName = DtString::nullString())
const;
432 virtual DtVrfObject* createRoute(
const DtList& vertices,
433 const DtString& uniqueName = DtString::nullString())
const;
451 const DtString& uniqueName = DtString::nullString())
const;
467 const DtList& vertices,
468 const DtString& uniqueName = DtString::nullString())
const;
484 const DtList& vertices,
485 const DtString& uniqueName = DtString::nullString())
const;
502 const DtList& vertices,
503 const DtString& uniqueName = DtString::nullString())
const;
540 const DtEntityType& entityType,
544 const DtString& entityName = DtString::nullString(),
545 bool allowBlocking =
true,
546 std::list<DtAdminContent*>* initialAdminContent = 0,
547 bool addToOrbat =
true)
const;
583 const DtEntityType& aggregateType,
587 const std::vector<DtUUID>& subordinates = std::vector<DtUUID>(),
588 const DtString& aggregateName = DtString::nullString(),
589 bool addToOrbat =
true)
const;
603 const DtEntityType& aggregateType,
607 bool createSubordinates,
608 const DtString& aggregateName = DtString::nullString(),
609 bool allowBlocking =
true,
610 bool addToOrbat =
true)
const;
623 virtual bool addSubordinate(
DtVrfObject* subordinate,
641 virtual bool removeSubordinate(
DtVrfObject* subordinate,
663 virtual void sendSetDataRequest(
DtVrfObject* entity,
668 virtual void assignPlanByUUID(
const DtUUID&,
const DtPlan& plan);
689 virtual void logObjectConsoleToFile(
DtVrfObject*
object,
690 DtFilename
filename = DtFilename::nullFilename());
693 virtual void stopLoggingObjectConsoleToFile(
DtVrfObject*
object);
698 virtual void setObjectConsoleNotificationLevel(
DtVrfObject*
object,
699 DtNotifyLevelType
level);
703 virtual void setPublishZeroVelocityWhenPaused(
bool);
704 virtual bool publishZeroVelocityWhenPaused()
const;
709 virtual void setSetDeadReckoningAlgorithmToStaticOnPause(
bool);
710 virtual bool setDeadReckoningAlgorithmToStaticOnPause()
const;
717 virtual bool reuseEntityIdentifiersOnScenarioLoad()
const;
718 virtual void setReuseEntityIdentifiersOnScenarioLoad(
bool);
726 virtual void setUseDrawControlForTaskVisualizations(
bool);
727 virtual bool useDrawControlForTaskVisualizations()
const;
845 virtual const DtSimulationAddress& simulationAddress()
const;
852 virtual int sessionId()
const;
860 virtual DtU32 scenarioCapabilities()
const;
861 virtual void setScenarioCapabilities(DtU32 v);
862 virtual void setScenarioCapability(DtU32 v,
bool);
868 virtual DtString applicationType()
const;
869 virtual void setApplicationType(
const DtString& type);
878 virtual DtExerciseConn* exerciseConn()
const;
883 virtual void useMapDatum(
const DtMapDatum& mapDatum);
886 virtual void setParameterDbLoaded(
bool flag);
888 virtual void setMaxDrainInputTime(
DtFloat64 maxTime);
889 virtual DtFloat64 maxDrainInputTime()
const;
892 virtual void setMinDrainInputTime(
DtFloat64 minTime);
893 virtual DtFloat64 minDrainInputTime()
const;
895 virtual void setMaxDrainInputReads(
int maxReads);
896 virtual int maxDrainInputReads()
const;
899 virtual bool logFrameRateStatistics()
const;
900 virtual void setLogFrameRateStatistics(
bool yesOrNo);
907 virtual void setDefaultParameterDbDirectory(
const DtFilename&
filename);
910 virtual DtFilename objectGroupsRoot()
const;
915 virtual void setRunInTimeManagementMode(
bool yesOrNo);
916 virtual bool runInTimeManagementMode()
const;
921 static void startTimeManagement(
void* usr);
922 static void stopTimeManagement(
void* usr);
926 virtual void processStartTimeManagement();
927 virtual void processStopTimeManagement();
931 virtual void setFullyLoadTerrain(
bool yesOrNo);
932 virtual bool fullyLoadTerrain()
const;
938 virtual void setAssertOnBlockingTerrainCalls(
bool b);
939 virtual bool assertOnBlockingTerrainCalls()
const;
948 virtual void addPluginToLoad(
const DtString&);
952 virtual void setLoadPluginsIfVersionMismatch(
bool);
953 virtual bool loadPluginsIfVersionMismatch()
const;
965 virtual void addPreLoadTerrainCallback(
967 virtual void removePreLoadTerrainCallback(
975 virtual void addPostLoadTerrainCallback(
977 virtual void removePostLoadTerrainCallback(
983 virtual void runForDuration(
double);
986 virtual void stopSimulationDurationTimer();
989 static void runDurationCompleteCallback(
void*);
990 virtual void processRunDurationComplete();
993 virtual void setPublishingGlobalEnvironment(
bool);
999 virtual void addPreLoadScenarioCallback(
1001 virtual void removePreLoadScenarioCallback(
1007 virtual void addPreCreateSimulationObjectGroupCallback(
1009 virtual void removePreCreateSimulationObjectGroupCallback(
1017 virtual void addPostLoadScenarioCallback(
1019 virtual void removePostLoadScenarioCallback(
1025 virtual void addPostCreateSimulationObjectGroupCallback(
1027 virtual void removePostCreateSimulationObjectGroupCallback(
1033 virtual void addPreImportScenarioCallback(
1035 virtual void removePreImportScenarioCallback(
1041 virtual void addPostImportScenarioCallback(
1043 virtual void removePostImportScenarioCallback(
1050 virtual void addPreSaveScenarioCallback(
1052 virtual void removePreSaveScenarioCallback(
1059 virtual void addPostSaveScenarioCallback(
1061 virtual void removePostSaveScenarioCallback(
1068 virtual void addPreCloseScenarioCallback(
1070 virtual void removePreCloseScenarioCallback(
1077 virtual void addPostCloseScenarioCallback(
1079 virtual void removePostCloseScenarioCallback(
1085 virtual void addPreSaveSimulationObjectGroupsCallback(
1087 virtual void removePreSaveSimulationObjectGroupsCallback(
1093 virtual void addPostSaveSimulationObjectGroupsCallback(
1095 virtual void removePostSaveSimulationObjectGroupsCallback(
1102 virtual void addScenarioPauseCallback(
1104 virtual void removeScenarioPauseCallback(
1111 virtual void addScenarioRunCallback(
1113 virtual void removeScenarioRunCallback(
1122 virtual void addPreScenarioRewindCallback(
1124 virtual void removePreScenarioRewindCallback(
1131 virtual void addPostScenarioRewindCallback(
1133 virtual void removePostScenarioRewindCallback(
1140 virtual void addPostTickCallback(
1142 virtual void removePostTickCallback(
1148 virtual void setTimeToQuit(
bool);
1149 virtual bool timeToQuit()
const;
1155 virtual bool executeSimCommand(
const DtSimCommand& simCommand);
1159 virtual void unloadTerrain();
1162 virtual bool isOrbatEnabled()
const;
1165 virtual bool canSleep()
const;
1172 static void objectParametersOpCallback(
DtSimMessage* msg,
void* usr);
1176 static void scenarioDescriptionCallback(
DtSimMessage*,
void* usr);
1177 virtual void processScenarioDescription(
DtSimMessage*);
1180 static void setScenarioFilenameCallback(
DtSimMessage*,
void* usr);
1181 virtual void processSetScenarioFilename(
DtSimMessage*);
1184 static void setRunDurationCallback(
DtSimMessage*,
void* usr);
1188 static void actionCategoriesRequestCallback(
DtSimMessage* msg,
void* usr);
1189 virtual void processActionCategoriesRequest(
DtSimMessage* msg);
1192 static void scenarioStatusRequestCallback(
DtSimMessage* msg,
void* usr);
1193 virtual void processScenarioStatusRequest(
DtSimMessage* msg);
1203 virtual void loadAllPlugins();
1206 virtual bool loadComponentAttachmentTable(
const DtFilename&
filename);
1212 virtual bool loadTerrain(
const DtFilename&
filename);
1217 virtual DtFilename findTerrainFile(
const DtFilename& startFile,
const std::vector<DtFilename>& searchPaths,
1218 const std::string& extension)
const;
1221 virtual bool loadOrderOfBattle(
const DtFilename&
filename);
1222 virtual bool loadOrderOfBattleFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1226 virtual bool loadScenarioScripts(
const DtFilename&
filename);
1227 virtual bool loadScenarioScriptsFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1228 virtual bool loadScenarioScripts(
const std::string& buffer);
1231 virtual bool loadOrbat(
const DtFilename&
filename,
DtOrbatManager* intoOm = 0,
bool clearBeforeLoading =
true);
1232 virtual bool loadOrbatFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename,
DtOrbatManager* intoOm = 0,
bool clearBeforeLoading =
true);
1233 virtual bool loadOrbat(
const std::string& buffer,
DtOrbatManager* intoOm = 0,
bool clearBeforeLoading =
true);
1238 virtual bool loadParameterDb(
const DtFilename&
filename,
1243 virtual bool loadObjectParametersDBFile(
const DtFilename& opdFile,
1249 virtual bool loadPhysicalWorldFile(
const DtFilename& file,
bool force =
false);
1254 virtual bool loadDetonationParametersFile(
const DtFilename& file,
bool force =
false);
1257 virtual bool loadPlans(
const DtFilename&
filename);
1258 virtual bool loadPlansFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1259 virtual bool loadPlans(
const std::string& buffer);
1262 virtual bool loadGlobalPlans(
const DtFilename&
filename);
1263 virtual bool loadGlobalPlansFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1267 virtual void loadHostilityAndExtrasFromZipFile(
const DtFilename& scenarioZipFile,
const DtScenarioExplorer& se);
1268 virtual void loadHostilityAndExtras(
const std::string& buffer);
1280 virtual void loadActionCategories(
const DtFilename& f);
1282 virtual bool loadForceHostility(
const DtFilename&
filename,
bool clear =
true);
1283 virtual bool loadForceHostilityFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename,
bool clear =
true);
1285 virtual bool loadScenarioExtras(
const DtFilename&
filename);
1286 virtual bool loadScenarioExtrasFromZipFile(
const DtFilename&,
const DtFilename&
filename);
1287 virtual bool loadScenarioExtras(
const std::string& buffer);
1291 virtual void processObjectParametersOp(
DtSimMessage * msg);
1296 virtual void emptyParametersDB();
1308 virtual void setFrameRateMode(
const DtString&
mode, DtReal deltaTime);
1311 virtual void setAutoReorganization(
bool onOff);
1315 virtual void drainInput();
1339 virtual void updateReadyStatus();
1348 static void simCommandCallback(
DtSimMessage* msg,
void* usr);
1356 static void deferredLoadScenarioCallback(
void * data);
1357 virtual void processDeferredLoadScenario();
1369 static void deferredRollbackCallback(
void * data);
1370 virtual void processDeferredRollback();
1377 static void deferredImportScenarioCallback(
void * data);
1378 virtual void processDeferredImportScenario();
1385 static void deferredRewindCallback(
void * data);
1386 virtual void processDeferredRewind();
1393 void rolloverStatsLogFilename(
const DtScenario* scenario);
1395 void logScenarioLoad(
const DtScenario* scenario);
1396 void logScenarioRewind();
1397 void logScenarioClose();
1401 virtual void clearAllSimulationModelSetInformation();
1557 int myMaxDrainInputReads;
1569 bool ownVrfCreator()
const;
1570 void setOwnVrfCreator(
bool yesOrNo);
1574 virtual bool differingModelSets(
DtScenario*)
const;