17 #include <vlutil/vlFilename.h>
18 #include <vlutil/vlTime.h>
19 #include <vl/hostStructs.h>
21 #include <vlutil/vlPrint.h>
32 #include <boost/unordered_set.hpp>
61 class DtJoyDeviceManager;
64 class DtCustomReportManager;
118 DtCgf(
const DtSimulationAddress& addr, DtU32 sessionId = 1,
const DtU32& capabilities = 0xffff);
144 int entityAdvisory = 100);
161 virtual void sendFinalStatus();
168 virtual bool importScenarioDescriptionFile(
const DtFilename& file,
const DtString& format,
169 const std::map<std::string, std::string>& importData);
174 virtual DtString exportScenarioDescriptionFile(
const DtFilename& file,
const DtString& format,
175 const std::map<std::string, std::string>& exportData);
178 virtual void setAppDataDir(
const DtString&);
179 virtual DtFilename appDataDir()
const;
182 virtual void setUserDataDir(
const DtString&);
183 virtual DtFilename userDataDir()
const;
186 virtual void setDataDir(
const DtString&);
187 virtual DtFilename
dataDir()
const;
192 virtual bool loadScenario(
const DtFilename& name,
int scenarioRunId = 0,
193 bool isOrbatEnabled =
false,
bool createGlobalEnv =
false,
194 bool createGlobalDynamicTerrain =
false);
202 virtual bool loadScenario(
const DtScenario& scenario,
int scenarioRunId = 0,
203 bool isOrbatEnabled =
false,
bool createGlobalEnv =
false,
204 bool createGlobalDynamicTerrain =
false);
213 virtual void clearSimulationObjects();
217 virtual bool importScenario(
const DtScenario&);
218 virtual bool importScenario(
const DtFilename&);
226 virtual bool newScenario(
const DtFilename& dbname =
227 DtFilename::nullFilename(),
const DtFilename& simulationModelSet =
228 DtFilename::nullFilename());
234 virtual void sendScenarioStatusMessage();
239 virtual bool saveScenario(
const DtFilename& savename,
bool saveAsSip =
false);
246 virtual void rollbackToSimTime(
double simTime);
250 virtual void takeSnapshot(
bool makeBase);
254 virtual bool saveSnapshot(
const DtFilename& saveFolder,
260 virtual bool saveSimulationObjectGroup(DtFilename saveFolder,
const DtString& groupName,
261 int flags, boost::unordered_set<DtUUID>& uuidsSaved,
bool& savAsZipFile);
268 virtual bool createSimulationObjectGroup(
const DtString& group,
int flags,
int force,
const DtVector& geocentricLocation,
269 double offsetRotation,
bool storedInZipFile =
false);
275 virtual void closeScenario(
const DtFilename& terrainToOpen =
"",
bool forceCloseAll =
false);
281 virtual bool loadAdditionalObjectParameters(
const DtFilename& paramsFileName,
289 virtual void pause();
296 virtual void rewind(
int scenarioRunId = 0);
299 virtual void setRejectMismatchedScenarioMessages(
bool);
300 virtual bool rejectMismatchedScenarioMessages()
const;
307 virtual void setForceParameterDbReload(
bool reload);
308 virtual bool forceParameterDbReload()
const;
315 virtual void setEnableResourceMonitor(
bool b);
316 virtual bool isResourceMonitorEnabled()
const;
328 virtual void setSmsValidationEnabled(
bool b);
342 virtual const DtFilename& defaultTerrainDirectory();
343 virtual void setDefaultTerrainDirectory(
const DtFilename& directory);
354 virtual const DtFilename& defaultSimulationModelSetFilename();
355 virtual void setDefaultSimulationModelSetFilename(
const DtFilename&
filename);
360 virtual void setUseDIGuy(
bool diguy);
361 virtual bool useDIGuy()
const;
368 virtual const DtFilename& diGuyAnimationsFilename();
369 virtual void setDIGuyAnimationsFilename(
const DtFilename&
filename);
374 virtual void setMsdlSidcMappingFile(
const DtFilename&);
375 virtual const DtFilename& msdlSidcMappingFile()
const;
380 virtual void setCountryCodesMappingFile(
const DtFilename&);
381 virtual const DtFilename& countryCodesMappingFile()
const;
394 virtual void deleteObject(
const DtUUID& name,
bool andRemoveFromOrbat =
true)
const;
398 virtual void deleteObject(
const DtEntityIdentifier& objectIdentifier,
bool andRemoveFromOrbat =
true)
const;
417 const DtString& uniqueName = DtString::nullString())
const;
433 virtual DtVrfObject* createRoute(
const DtList& vertices,
434 const DtString& uniqueName = DtString::nullString())
const;
452 const DtString& uniqueName = DtString::nullString())
const;
468 const DtList& vertices,
469 const DtString& uniqueName = DtString::nullString())
const;
485 const DtList& vertices,
486 const DtString& uniqueName = DtString::nullString())
const;
503 const DtList& vertices,
504 const DtString& uniqueName = DtString::nullString())
const;
541 const DtEntityType& entityType,
545 const DtString& entityName = DtString::nullString(),
546 bool allowBlocking =
true,
547 std::list<DtAdminContent*>* initialAdminContent = 0,
548 bool addToOrbat =
true)
const;
584 const DtEntityType& aggregateType,
588 const std::vector<DtUUID>& subordinates = std::vector<DtUUID>(),
589 const DtString& aggregateName = DtString::nullString(),
590 bool addToOrbat =
true)
const;
604 const DtEntityType& aggregateType,
608 bool createSubordinates,
609 const DtString& aggregateName = DtString::nullString(),
610 bool allowBlocking =
true,
611 bool addToOrbat =
true)
const;
624 virtual bool addSubordinate(
DtVrfObject* subordinate,
642 virtual bool removeSubordinate(
DtVrfObject* subordinate,
664 virtual void sendSetDataRequest(
DtVrfObject* entity,
669 virtual void assignPlanByUUID(
const DtUUID&,
const DtPlan& plan);
690 virtual void logObjectConsoleToFile(
DtVrfObject*
object,
691 DtFilename
filename = DtFilename::nullFilename());
694 virtual void stopLoggingObjectConsoleToFile(
DtVrfObject*
object);
699 virtual void setObjectConsoleNotificationLevel(
DtVrfObject*
object,
700 DtNotifyLevelType
level);
704 virtual void setPublishZeroVelocityWhenPaused(
bool);
705 virtual bool publishZeroVelocityWhenPaused()
const;
710 virtual void setSetDeadReckoningAlgorithmToStaticOnPause(
bool);
711 virtual bool setDeadReckoningAlgorithmToStaticOnPause()
const;
718 virtual bool reuseEntityIdentifiersOnScenarioLoad()
const;
719 virtual void setReuseEntityIdentifiersOnScenarioLoad(
bool);
727 virtual void setUseDrawControlForTaskVisualizations(
bool);
728 virtual bool useDrawControlForTaskVisualizations()
const;
846 virtual const DtSimulationAddress& simulationAddress()
const;
853 virtual int sessionId()
const;
861 virtual DtU32 scenarioCapabilities()
const;
862 virtual void setScenarioCapabilities(DtU32 v);
863 virtual void setScenarioCapability(DtU32 v,
bool);
869 virtual DtString applicationType()
const;
870 virtual void setApplicationType(
const DtString& type);
879 virtual DtExerciseConn* exerciseConn()
const;
884 virtual void useMapDatum(
const DtMapDatum& mapDatum);
887 virtual void setParameterDbLoaded(
bool flag);
889 virtual void setMaxDrainInputTime(
DtFloat64 maxTime);
890 virtual DtFloat64 maxDrainInputTime()
const;
893 virtual void setMinDrainInputTime(
DtFloat64 minTime);
894 virtual DtFloat64 minDrainInputTime()
const;
896 virtual void setMaxDrainInputReads(
int maxReads);
897 virtual int maxDrainInputReads()
const;
900 virtual bool logFrameRateStatistics()
const;
901 virtual void setLogFrameRateStatistics(
bool yesOrNo);
908 virtual void setDefaultParameterDbDirectory(
const DtFilename&
filename);
911 virtual DtFilename objectGroupsRoot()
const;
916 virtual void setRunInTimeManagementMode(
bool yesOrNo);
917 virtual bool runInTimeManagementMode()
const;
922 static void startTimeManagement(
void* usr);
923 static void stopTimeManagement(
void* usr);
927 virtual void processStartTimeManagement();
928 virtual void processStopTimeManagement();
932 virtual void setFullyLoadTerrain(
bool yesOrNo);
933 virtual bool fullyLoadTerrain()
const;
939 virtual void setAssertOnBlockingTerrainCalls(
bool b);
940 virtual bool assertOnBlockingTerrainCalls()
const;
949 virtual void addPluginToLoad(
const DtString&);
953 virtual void setLoadPluginsIfVersionMismatch(
bool);
954 virtual bool loadPluginsIfVersionMismatch()
const;
966 virtual void addPreLoadTerrainCallback(
968 virtual void removePreLoadTerrainCallback(
976 virtual void addPostLoadTerrainCallback(
978 virtual void removePostLoadTerrainCallback(
984 virtual void runForDuration(
double);
987 virtual void stopSimulationDurationTimer();
990 static void runDurationCompleteCallback(
void*);
991 virtual void processRunDurationComplete();
994 virtual void setPublishingGlobalEnvironment(
bool);
1000 virtual void addPreLoadScenarioCallback(
1002 virtual void removePreLoadScenarioCallback(
1008 virtual void addPreCreateSimulationObjectGroupCallback(
1010 virtual void removePreCreateSimulationObjectGroupCallback(
1018 virtual void addPostLoadScenarioCallback(
1020 virtual void removePostLoadScenarioCallback(
1026 virtual void addPostCreateSimulationObjectGroupCallback(
1028 virtual void removePostCreateSimulationObjectGroupCallback(
1034 virtual void addPreImportScenarioCallback(
1036 virtual void removePreImportScenarioCallback(
1042 virtual void addPostImportScenarioCallback(
1044 virtual void removePostImportScenarioCallback(
1051 virtual void addPreSaveScenarioCallback(
1053 virtual void removePreSaveScenarioCallback(
1060 virtual void addPostSaveScenarioCallback(
1062 virtual void removePostSaveScenarioCallback(
1069 virtual void addPreCloseScenarioCallback(
1071 virtual void removePreCloseScenarioCallback(
1078 virtual void addPostCloseScenarioCallback(
1080 virtual void removePostCloseScenarioCallback(
1086 virtual void addPreSaveSimulationObjectGroupsCallback(
1088 virtual void removePreSaveSimulationObjectGroupsCallback(
1094 virtual void addPostSaveSimulationObjectGroupsCallback(
1096 virtual void removePostSaveSimulationObjectGroupsCallback(
1103 virtual void addScenarioPauseCallback(
1105 virtual void removeScenarioPauseCallback(
1112 virtual void addScenarioRunCallback(
1114 virtual void removeScenarioRunCallback(
1123 virtual void addPreScenarioRewindCallback(
1125 virtual void removePreScenarioRewindCallback(
1132 virtual void addPostScenarioRewindCallback(
1134 virtual void removePostScenarioRewindCallback(
1141 virtual void addPostTickCallback(
1143 virtual void removePostTickCallback(
1149 virtual void setTimeToQuit(
bool);
1150 virtual bool timeToQuit()
const;
1156 virtual bool executeSimCommand(
const DtSimCommand& simCommand);
1160 virtual void unloadTerrain();
1163 virtual bool isOrbatEnabled()
const;
1166 virtual bool canSleep()
const;
1168 virtual double timeScale()
const;
1175 static void objectParametersOpCallback(
DtSimMessage* msg,
void* usr);
1179 static void scenarioDescriptionCallback(
DtSimMessage*,
void* usr);
1180 virtual void processScenarioDescription(
DtSimMessage*);
1183 static void setScenarioFilenameCallback(
DtSimMessage*,
void* usr);
1184 virtual void processSetScenarioFilename(
DtSimMessage*);
1187 static void setRunDurationCallback(
DtSimMessage*,
void* usr);
1191 static void actionCategoriesRequestCallback(
DtSimMessage* msg,
void* usr);
1192 virtual void processActionCategoriesRequest(
DtSimMessage* msg);
1195 static void scenarioStatusRequestCallback(
DtSimMessage* msg,
void* usr);
1196 virtual void processScenarioStatusRequest(
DtSimMessage* msg);
1199 static void adjustSettingsForTimeMultiplierCallback(
DtFloat64 timeMult,
void* usr);
1209 virtual void loadAllPlugins();
1212 virtual bool loadComponentAttachmentTable(
const DtFilename&
filename);
1218 virtual bool loadTerrain(
const DtFilename&
filename);
1223 virtual DtFilename findTerrainFile(
const DtFilename& startFile,
const std::vector<DtFilename>& searchPaths,
1224 const std::string& extension)
const;
1227 virtual bool loadOrderOfBattle(
const DtFilename&
filename);
1228 virtual bool loadOrderOfBattleFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1232 virtual bool loadScenarioScripts(
const DtFilename&
filename);
1233 virtual bool loadScenarioScriptsFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1234 virtual bool loadScenarioScripts(
const std::string& buffer);
1237 virtual bool loadOrbat(
const DtFilename&
filename,
DtOrbatManager* intoOm = 0,
bool clearBeforeLoading =
true);
1238 virtual bool loadOrbatFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename,
DtOrbatManager* intoOm = 0,
bool clearBeforeLoading =
true);
1239 virtual bool loadOrbat(
const std::string& buffer,
DtOrbatManager* intoOm = 0,
bool clearBeforeLoading =
true);
1244 virtual bool loadParameterDb(
const DtFilename&
filename,
1249 virtual bool loadObjectParametersDBFile(
const DtFilename& opdFile,
1255 virtual bool loadPhysicalWorldFile(
const DtFilename& file,
bool force =
false);
1260 virtual bool loadDetonationParametersFile(
const DtFilename& file,
bool force =
false);
1263 virtual bool loadPlans(
const DtFilename&
filename);
1264 virtual bool loadPlansFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1265 virtual bool loadPlans(
const std::string& buffer);
1268 virtual bool loadGlobalPlans(
const DtFilename&
filename);
1269 virtual bool loadGlobalPlansFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename);
1273 virtual void loadHostilityAndExtrasFromZipFile(
const DtFilename& scenarioZipFile,
const DtScenarioExplorer& se);
1274 virtual void loadHostilityAndExtras(
const std::string& buffer);
1286 virtual void loadActionCategories(
const DtFilename& f);
1288 virtual bool loadForceHostility(
const DtFilename&
filename,
bool clear =
true);
1289 virtual bool loadForceHostilityFromZipFile(
const DtFilename& scenarioZipFile,
const DtFilename&
filename,
bool clear =
true);
1291 virtual bool loadScenarioExtras(
const DtFilename&
filename);
1292 virtual bool loadScenarioExtrasFromZipFile(
const DtFilename&,
const DtFilename&
filename);
1293 virtual bool loadScenarioExtras(
const std::string& buffer);
1297 virtual void processObjectParametersOp(
DtSimMessage * msg);
1302 virtual void emptyParametersDB();
1314 virtual void setFrameRateMode(
const DtString&
mode, DtReal deltaTime);
1317 virtual void setAutoReorganization(
bool onOff);
1321 virtual void drainInput();
1345 virtual void updateReadyStatus();
1354 static void simCommandCallback(
DtSimMessage* msg,
void* usr);
1362 static void deferredLoadScenarioCallback(
void * data);
1363 virtual void processDeferredLoadScenario();
1375 static void deferredRollbackCallback(
void * data);
1376 virtual void processDeferredRollback();
1383 static void deferredImportScenarioCallback(
void * data);
1384 virtual void processDeferredImportScenario();
1391 static void deferredRewindCallback(
void * data);
1392 virtual void processDeferredRewind();
1399 void rolloverStatsLogFilename(
const DtScenario* scenario);
1401 void logScenarioLoad(
const DtScenario* scenario);
1402 void logScenarioRewind();
1403 void logScenarioClose();
1407 virtual void clearAllSimulationModelSetInformation();
1409 virtual void adjustSettingsForTimeMultiplier(
double timeMultiplier);
1568 int myMaxDrainInputReads;
1580 bool ownVrfCreator()
const;
1581 void setOwnVrfCreator(
bool yesOrNo);
1585 virtual bool differingModelSets(
DtScenario*)
const;