17 #include <vlutil/vlFilename.h>
18 #include <vlutil/vlTime.h>
19 #include <vl/hostStructs.h>
21 #include <vlutil/vlPrint.h>
33 #include <boost/unordered_set.hpp>
63 class DtJoyDeviceManager;
67 class DtCustomReportManager;
122 DtCgf(
const DtSimulationAddress& addr, DtU32 sessionId = 1,
const DtU32& capabilities = 0xffff);
148 int entityAdvisory = 100);
165 virtual void sendFinalStatus();
172 virtual bool importScenarioDescriptionFile(
const DtFilename& file,
const DtString& format,
173 const std::map<std::string, std::string>& importData);
178 virtual DtString exportScenarioDescriptionFile(
const DtFilename& file,
const DtString& format,
179 const std::map<std::string, std::string>& exportData);
182 virtual void setAppDataDir(
const DtString&);
183 virtual DtFilename appDataDir()
const;
186 virtual void setUserDataDir(
const DtString&);
187 virtual DtFilename userDataDir()
const;
190 virtual void setDataDir(
const DtString&);
191 virtual DtFilename
dataDir()
const;
196 virtual bool loadScenario(
const DtFilename& name,
int scenarioRunId = 0,
197 bool isOrbatEnabled =
false,
bool createGlobalEnv =
false,
198 bool createGlobalDynamicTerrain =
false);
206 virtual bool loadScenario(
const DtScenario& scenario,
int scenarioRunId = 0,
207 bool isOrbatEnabled =
false,
bool createGlobalEnv =
false,
208 bool createGlobalDynamicTerrain =
false);
217 virtual void clearSimulationObjects();
221 virtual bool importScenario(
const DtScenario&);
222 virtual bool importScenario(
const DtFilename&);
230 virtual bool newScenario(
const DtFilename& dbname =
231 DtFilename::nullFilename(),
const DtFilename& simulationModelSet =
232 DtFilename::nullFilename());
238 virtual void sendScenarioStatusMessage();
243 virtual bool saveScenario(
const DtFilename& savename,
bool saveAsSip =
false);
250 virtual void rollbackToSimTime(
double simTime);
254 virtual void takeSnapshot(
bool makeBase);
258 virtual bool saveSnapshot(
const DtFilename& saveFolder,
264 virtual bool saveSimulationObjectGroup(DtFilename saveFolder,
const DtString& groupName,
265 int flags, boost::unordered_set<DtUUID>& uuidsSaved,
bool& savAsZipFile);
272 virtual bool createSimulationObjectGroup(
const DtString& group,
int flags,
int force,
const DtVector& geocentricLocation,
273 double offsetRotation,
bool storedInZipFile =
false);
279 virtual void closeScenario(
const DtFilename& terrainToOpen =
"",
bool forceCloseAll =
false);
285 virtual bool loadAdditionalObjectParameters(
const DtFilename& paramsFileName,
293 virtual void pause();
300 virtual void rewind(
int scenarioRunId = 0);
303 virtual void setRejectMismatchedScenarioMessages(
bool);
304 virtual bool rejectMismatchedScenarioMessages()
const;
311 virtual void setForceParameterDbReload(
bool reload);
312 virtual bool forceParameterDbReload()
const;
319 virtual void setEnableResourceMonitor(
bool b);
320 virtual bool isResourceMonitorEnabled()
const;
332 virtual void setSmsValidationEnabled(
bool b);
346 virtual const DtFilename& defaultTerrainDirectory();
347 virtual void setDefaultTerrainDirectory(
const DtFilename& directory);
358 virtual const DtFilename& defaultSimulationModelSetFilename();
359 virtual void setDefaultSimulationModelSetFilename(
const DtFilename&
filename);
364 virtual void setUseDIGuy(
bool diguy);
365 virtual bool useDIGuy()
const;
372 virtual const DtFilename& diGuyAnimationsFilename();
373 virtual void setDIGuyAnimationsFilename(
const DtFilename&
filename);
378 virtual void setMsdlSidcMappingFile(
const DtFilename&);
379 virtual const DtFilename& msdlSidcMappingFile()
const;
384 virtual void setCountryCodesMappingFile(
const DtFilename&);
385 virtual const DtFilename& countryCodesMappingFile()
const;
398 virtual void deleteObject(
const DtUUID& name,
bool andRemoveFromOrbat =
true)
const;
402 virtual void deleteObject(
const DtEntityIdentifier& objectIdentifier,
bool andRemoveFromOrbat =
true)
const;
421 const DtString& uniqueName = DtString::nullString())
const;
437 virtual DtVrfObject* createRoute(
const DtList& vertices,
438 const DtString& uniqueName = DtString::nullString())
const;
456 const DtString& uniqueName = DtString::nullString())
const;
472 const DtList& vertices,
473 const DtString& uniqueName = DtString::nullString())
const;
489 const DtList& vertices,
490 const DtString& uniqueName = DtString::nullString())
const;
507 const DtList& vertices,
508 const DtString& uniqueName = DtString::nullString())
const;
545 const DtEntityType& entityType,
549 const DtString& entityName = DtString::nullString(),
550 bool allowBlocking =
true,
551 std::list<DtAdminContent*>* initialAdminContent = 0,
552 bool addToOrbat =
true)
const;
588 const DtEntityType& aggregateType,
592 const std::vector<DtUUID>& subordinates = std::vector<DtUUID>(),
593 const DtString& aggregateName = DtString::nullString(),
594 bool addToOrbat =
true)
const;
608 const DtEntityType& aggregateType,
612 bool createSubordinates,
613 const DtString& aggregateName = DtString::nullString(),
614 bool allowBlocking =
true,
615 bool addToOrbat =
true)
const;
628 virtual bool addSubordinate(
DtVrfObject* subordinate,
646 virtual bool removeSubordinate(
DtVrfObject* subordinate,
668 virtual void sendSetDataRequest(
DtVrfObject* entity,
673 virtual void assignPlanByUUID(
const DtUUID&,
const DtPlan& plan);
694 virtual void logObjectConsoleToFile(
DtVrfObject*
object,
695 DtFilename
filename = DtFilename::nullFilename());
698 virtual void stopLoggingObjectConsoleToFile(
DtVrfObject*
object);
703 virtual void setObjectConsoleNotificationLevel(
DtVrfObject*
object,
704 DtNotifyLevelType
level);
708 virtual void setPublishZeroVelocityWhenPaused(
bool);
709 virtual bool publishZeroVelocityWhenPaused()
const;
714 virtual void setSetDeadReckoningAlgorithmToStaticOnPause(
bool);
715 virtual bool setDeadReckoningAlgorithmToStaticOnPause()
const;
722 virtual bool reuseEntityIdentifiersOnScenarioLoad()
const;
723 virtual void setReuseEntityIdentifiersOnScenarioLoad(
bool);
731 virtual void setUseDrawControlForTaskVisualizations(
bool);
732 virtual bool useDrawControlForTaskVisualizations()
const;
857 virtual const DtSimulationAddress& simulationAddress()
const;
864 virtual int sessionId()
const;
872 virtual DtU32 scenarioCapabilities()
const;
873 virtual void setScenarioCapabilities(DtU32 v);
874 virtual void setScenarioCapability(DtU32 v,
bool);
880 virtual DtString applicationType()
const;
881 virtual void setApplicationType(
const DtString& type);
890 virtual DtExerciseConn* exerciseConn()
const;
895 virtual void useMapDatum(
const DtMapDatum& mapDatum);
898 virtual void setParameterDbLoaded(
bool flag);
900 virtual void setMaxDrainInputTime(
DtFloat64 maxTime);
901 virtual DtFloat64 maxDrainInputTime()
const;
904 virtual void setMinDrainInputTime(
DtFloat64 minTime);
905 virtual DtFloat64 minDrainInputTime()
const;
907 virtual void setMaxDrainInputReads(
int maxReads);
908 virtual int maxDrainInputReads()
const;
911 virtual bool logFrameRateStatistics()
const;
912 virtual void setLogFrameRateStatistics(
bool yesOrNo);
919 virtual void setDefaultParameterDbDirectory(
const DtFilename&
filename);
922 virtual DtFilename objectGroupsRoot()
const;
927 virtual void setRunInTimeManagementMode(
bool yesOrNo);
928 virtual bool runInTimeManagementMode()
const;
933 static void startTimeManagement(
void* usr);
934 static void stopTimeManagement(
void* usr);
938 virtual void processStartTimeManagement();
939 virtual void processStopTimeManagement();
947 virtual bool reinitializeScenario();
949 virtual void setFullyLoadTerrain(
bool yesOrNo);
950 virtual bool fullyLoadTerrain()
const;
956 virtual void setAssertOnBlockingTerrainCalls(
bool b);
957 virtual bool assertOnBlockingTerrainCalls()
const;
966 virtual void addPluginToLoad(
const DtString&);
970 virtual void setLoadPluginsIfVersionMismatch(
bool);
971 virtual bool loadPluginsIfVersionMismatch()
const;
983 virtual void addPreLoadTerrainCallback(
985 virtual void removePreLoadTerrainCallback(
993 virtual void addPostLoadTerrainCallback(
995 virtual void removePostLoadTerrainCallback(
1001 virtual void runForDuration(
double);
1004 virtual void stopSimulationDurationTimer();
1007 static void runDurationCompleteCallback(
void*);
1008 virtual void processRunDurationComplete();
1011 virtual void setPublishingGlobalEnvironment(
bool);
1017 virtual void addPreLoadScenarioCallback(
1019 virtual void removePreLoadScenarioCallback(
1025 virtual void addPreScenarioReinitializeCallback(
1027 virtual void removePreScenarioReinitializeCallback(
1034 virtual void addPostScenarioReinitializeCallback(
1036 virtual void removePostScenarioReinitializeCallback(
1042 virtual void addPreCreateSimulationObjectGroupCallback(
1044 virtual void removePreCreateSimulationObjectGroupCallback(
1052 virtual void addPostLoadScenarioCallback(
1054 virtual void removePostLoadScenarioCallback(
1060 virtual void addPostCreateSimulationObjectGroupCallback(
1062 virtual void removePostCreateSimulationObjectGroupCallback(
1068 virtual void addPreImportScenarioCallback(
1070 virtual void removePreImportScenarioCallback(
1076 virtual void addPostImportScenarioCallback(
1078 virtual void removePostImportScenarioCallback(
1085 virtual void addPreSaveScenarioCallback(
1087 virtual void removePreSaveScenarioCallback(
1094 virtual void addPostSaveScenarioCallback(
1096 virtual void removePostSaveScenarioCallback(
1103 virtual void addPreCloseScenarioCallback(
1105 virtual void removePreCloseScenarioCallback(
1112 virtual void addPostCloseScenarioCallback(
1114 virtual void removePostCloseScenarioCallback(
1120 virtual void addPreSaveSimulationObjectGroupsCallback(
1122 virtual void removePreSaveSimulationObjectGroupsCallback(
1128 virtual void addPostSaveSimulationObjectGroupsCallback(
1130 virtual void removePostSaveSimulationObjectGroupsCallback(
1137 virtual void addScenarioPauseCallback(
1139 virtual void removeScenarioPauseCallback(
1146 virtual void addScenarioRunCallback(
1148 virtual void removeScenarioRunCallback(
1157 virtual void addPreScenarioRewindCallback(
1159 virtual void removePreScenarioRewindCallback(
1166 virtual void addPostScenarioRewindCallback(
1168 virtual void removePostScenarioRewindCallback(
1175 virtual void addPostTickCallback(
1177 virtual void removePostTickCallback(
1183 virtual void setTimeToQuit(
bool);
1184 virtual bool timeToQuit()
const;
1190 virtual bool executeSimCommand(
const DtSimCommand& simCommand);
1194 virtual void unloadTerrain();
1197 virtual bool isOrbatEnabled()
const;
1200 virtual bool canSleep()
const;
1202 virtual double timeScale()
const;
1209 static void objectParametersOpCallback(
DtSimMessage* msg,
void* usr);
1213 static void scenarioDescriptionCallback(
DtSimMessage*,
void* usr);
1214 virtual void processScenarioDescription(
DtSimMessage*);
1217 static void setScenarioFilenameCallback(
DtSimMessage*,
void* usr);
1218 virtual void processSetScenarioFilename(
DtSimMessage*);
1221 static void setRunDurationCallback(
DtSimMessage*,
void* usr);
1225 static void actionCategoriesRequestCallback(
DtSimMessage* msg,
void* usr);
1226 virtual void processActionCategoriesRequest(
DtSimMessage* msg);
1229 static void scenarioStatusRequestCallback(
DtSimMessage* msg,
void* usr);
1230 virtual void processScenarioStatusRequest(
DtSimMessage* msg);
1233 static void adjustSettingsForTimeMultiplierCallback(
DtFloat64 timeMult,
void* usr);
1243 virtual void loadAllPlugins();
1246 virtual bool loadComponentAttachmentTable(
const DtFilename&
filename);
1252 virtual bool loadTerrain(
const DtFilename&
filename);
1257 virtual DtFilename findTerrainFile(
const DtFilename& startFile,
const std::vector<DtFilename>& searchPaths,
1258 const std::string& extension)
const;
1261 virtual bool loadOrderOfBattle(
const DtFilename&
filename);
1262 virtual bool loadOrderOfBattleFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1266 virtual bool loadScenarioScripts(
const DtFilename&
filename);
1267 virtual bool loadScenarioScriptsFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1268 virtual bool loadScenarioScripts(
const std::string& buffer);
1271 virtual bool loadOrbat(
const DtFilename&
filename,
DtOrbatManager* intoOm = 0,
bool clearBeforeLoading =
true);
1272 virtual bool loadOrbatFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename,
DtOrbatManager* intoOm = 0,
bool clearBeforeLoading =
true);
1273 virtual bool loadOrbat(
const std::string& buffer,
DtOrbatManager* intoOm = 0,
bool clearBeforeLoading =
true);
1277 virtual void prepareForScenarioReinitialize();
1280 virtual bool isScenarioReinitializing()
const;
1285 virtual bool loadParameterDb(
const DtFilename&
filename,
1290 virtual bool loadObjectParametersDBFile(
const DtFilename& opdFile,
1296 virtual bool loadPhysicalWorldFile(
const DtFilename& file,
bool force =
false);
1301 virtual bool loadDetonationParametersFile(
const DtFilename& file,
bool force =
false);
1306 virtual bool loadAmmunitionParametersFile(
const DtFilename& file,
bool force =
false);
1309 virtual bool loadPlans(
const DtFilename&
filename);
1310 virtual bool loadPlansFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1311 virtual bool loadPlans(
const std::string& buffer);
1314 virtual bool loadGlobalPlans(
const DtFilename&
filename);
1315 virtual bool loadGlobalPlansFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1319 virtual void loadHostilityAndExtrasFromZipFile(
const DtFilename& scenarioZipFile,
const DtScenarioExplorer& se);
1320 virtual void loadHostilityAndExtras(
const std::string& buffer);
1332 virtual void loadActionCategories(
const DtFilename& f);
1334 virtual bool loadForceHostility(
const DtFilename&
filename,
bool clear =
true);
1335 virtual bool loadForceHostilityFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename,
bool clear =
true);
1337 virtual bool loadScenarioExtras(
const DtFilename&
filename);
1338 virtual bool loadScenarioExtrasFromZipFile(
const DtFilename&,
const DtFilename&
filename);
1339 virtual bool loadScenarioExtras(
const std::string& buffer);
1343 virtual void processObjectParametersOp(
DtSimMessage * msg);
1348 virtual void emptyParametersDB();
1360 virtual void setFrameRateMode(
const DtString&
mode, DtReal deltaTime);
1363 virtual void setAutoReorganization(
bool onOff);
1367 virtual void drainInput();
1391 virtual void updateReadyStatus();
1400 static void simCommandCallback(
DtSimMessage* msg,
void* usr);
1408 static void deferredLoadScenarioCallback(
void * data);
1409 virtual void processDeferredLoadScenario();
1418 static void deferredReinitializeScenarioCallback(
void * data);
1419 virtual void processDeferredReinitializeScenario();
1427 static void deferredRollbackCallback(
void * data);
1428 virtual void processDeferredRollback();
1435 static void deferredImportScenarioCallback(
void * data);
1436 virtual void processDeferredImportScenario();
1443 static void deferredRewindCallback(
void * data);
1444 virtual void processDeferredRewind();
1451 void rolloverStatsLogFilename(
const DtScenario* scenario);
1453 void logScenarioLoad(
const DtScenario* scenario);
1454 void logScenarioRewind();
1455 void logScenarioClose();
1459 virtual void clearAllSimulationModelSetInformation();
1461 virtual void adjustSettingsForTimeMultiplier(
double timeMultiplier);
1627 int myMaxDrainInputReads;
1639 bool ownVrfCreator()
const;
1640 void setOwnVrfCreator(
bool yesOrNo);
1644 virtual bool differingModelSets(
DtScenario*)
const;