VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
cgf.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 
12 
13 #ifdef WIN32
14 #include <winsock2.h>
15 #endif
16 
17 #include <vlutil/vlFilename.h>
18 #include <vlutil/vlTime.h>
19 #include <vl/hostStructs.h>
20 #include <vector>
21 #include <vlutil/vlPrint.h>
24 #include "vrfutil/scenario.h"
26 #include "vrfutil/outputLogger.h"
27 #include "vrfutil/rwActivities.h"
28 
29 class DtAdminContent;
30 class DtIfScenarioStatus;
32 class DtExerciseConn;
33 class DtScenario;
34 class DtScenarioExplorer;
35 class DtPhysicalWorld;
36 class DtCommModelManager;
37 class DtTerrainInterface;
38 class DtVrfCreator;
39 class DtSimManager;
46 class DtVrfObjectManager;
50 class DtFireManager;
52 class DtJoyDeviceManager;
53 class DtHostilityManager;
55 class DtCustomReportManager;
57 class DtFactoryManager;
58 class DtVrfObject;
59 class DtObjectType;
60 class DtList;
61 class DtSimTask;
62 class DtSetDataRequest;
63 class DtPlan;
64 class DtPaperMapDatabase;
65 class DtMapDatum;
66 class DtVrfParameterDb;
67 class DtSimMessage;
68 class DtResourceMonitor;
69 class DtVrfObjectIdGenerator;
70 class DtVrfPlugin;
71 class DtVrfPluginManager;
72 class DtHlaExerciseClock;
73 class DtExerciseClock;
74 class DtSimCommand;
81 class DtTimer;
83 
96 #include "vrfcgf/vrfcgfDefines.h"
98 {
99 public:
100 
107  DtCgf(const DtSimulationAddress& addr, DtU32 sessionId = 1);
108 
132  virtual void init(DtExerciseConn* conn, DtVrfCreator* creator = 0,
133  int entityAdvisory = 100);
134 
136  virtual ~DtCgf();
137 
139  virtual const DtVrfSimOptionsInterface* simOptions() const;
140 
142  virtual void setSimOptions(const DtVrfSimOptionsInterface&);
143 
146  virtual void tick();
147 
150  virtual void sendFinalStatus();
151 
152  //-------------------------------------------------------
154  //-------------------------------------------------------
155 
157  virtual bool importScenarioDescriptionFile(const DtFilename& file, const DtString& format,
158  const std::map<std::string, std::string>& importData);
159 
163  virtual DtString exportScenarioDescriptionFile(const DtFilename& file, const DtString& format,
164  const std::map<std::string, std::string>& exportData);
165 
167  virtual void setAppDataDir(const DtString&);
168  virtual const DtString& appDataDir() const;
169 
173  virtual bool loadScenario(const DtFilename& name);
174 
181  virtual bool loadScenario(const DtScenario& scenario);
182 
189  virtual bool newScenario(const DtFilename& dbname =
190  DtFilename::nullFilename(), const DtFilename& simulationModelSet =
191  DtFilename::nullFilename());
192 
196  virtual bool saveScenario(const DtFilename& savename);
197 
202  virtual void closeScenario(const DtFilename& terrainToOpen = "");
203 
208  virtual bool loadAdditionalObjectParameters(const DtFilename& paramsFileName,
209  const DtReaderWriter::SearchPaths& searchPaths);
210 
213  virtual void run();
214 
216  virtual void pause();
217 
223  virtual void rewind();
224 
229 
230  virtual void setForceParameterDbReload(bool reload);
231  virtual bool forceParameterDbReload() const;
233 
237 
238  virtual void setEnableResourceMonitor(bool b);
239  virtual bool isResourceMonitorEnabled() const;
241 
245  virtual void setSmsValidationEnabled(bool b);
246 
248 #ifdef WIN32
249  virtual void setAppInstance(HINSTANCE hInstance);
250  virtual void setConsoleWindow(HWND consoleWindow);
251 #endif
252 
264 
265  virtual const DtFilename& defaultTerrainDirectory();
266  virtual void setDefaultTerrainDirectory(const DtFilename& directory);
268 
273 
274  virtual const DtFilename& defaultSimulationModelSetFilename();
275  virtual void setDefaultSimulationModelSetFilename(const DtFilename& filename);
277 
279 
280  virtual void setUseDIGuy(bool diguy);
281  virtual bool useDIGuy() const;
283 
288 
289  virtual const DtFilename& diGuyCharacterDataFilename();
290  virtual void setDIGuyCharacterDataFilename(const DtFilename& filename);
291 
292  virtual const DtFilename& diGuyAnimationsFilename();
293  virtual void setDIGuyAnimationsFilename(const DtFilename& filename);
295 
297 
298  virtual void setMsdlSidcMappingFile(const DtFilename&);
299  virtual const DtFilename& msdlSidcMappingFile() const;
301 
303 
304  virtual void setCountryCodesMappingFile(const DtFilename&);
305  virtual const DtFilename& countryCodesMappingFile() const;
307 
310  virtual DtSimulationModelSet* defaultModelSet();
311 
312  //-------------------------------------------------------
314  //-------------------------------------------------------
315 
318  virtual void deleteObject(const DtString& name) const;
319 
322  virtual void deleteObject(const DtEntityIdentifier& objectIdentifier) const;
323 
324  //-------------------------------------------------------
326  //-------------------------------------------------------
327 
329 
340  virtual DtVrfObject* createWaypoint(const DtVector& localPosition,
341  const DtString& uniqueName = DtString::nullString()) const;
342 
344 
357  virtual DtVrfObject* createRoute(const DtList& vertices,
358  const DtString& uniqueName = DtString::nullString()) const;
359 
361 
373  virtual DtVrfObject* createPhaseLine(
374  const DtVector& dbPoint1,
375  const DtVector& dbPoint2,
376  const DtString& uniqueName = DtString::nullString()) const;
377 
379 
391  virtual DtVrfObject* createControlArea(
392  const DtList& vertices,
393  const DtString& uniqueName = DtString::nullString()) const;
394 
396 
408  virtual DtVrfObject* createObstacle(
409  const DtList& vertices,
410  const DtString& uniqueName = DtString::nullString()) const;
411 
413 
426  virtual DtVrfObject* createDisaggregationArea(
427  const DtList& vertices,
428  const DtString& uniqueName = DtString::nullString()) const;
429 
430  //-------------------------------------------------------
432  //-------------------------------------------------------
433 
435 
464  virtual DtVrfObject* createEntity(
465  const DtEntityType& entityType,
466  DtForceType force,
467  const DtVector& dbPosition,
468  DtReal heading,
469  const DtString& entityName = DtString::nullString(),
470  bool allowBlocking = true,
471  std::list<DtAdminContent*>* initialAdminContent = 0) const;
472 
473 
475 
506  virtual DtVrfObject* createAggregate(
507  const DtEntityType& aggregateType,
508  DtForceType force,
509  const DtVector& localPosition,
510  DtReal heading,
511  DtList* subordinateNames = 0,
512  const DtString& aggregateName = DtString::nullString()) const;
513 
525  virtual DtVrfObject* createAggregate(
526  const DtEntityType& aggregateType,
527  DtForceType force,
528  const DtVector& localPosition,
529  DtReal heading,
530  bool createSubordinates,
531  const DtString& aggregateName = DtString::nullString(),
532  bool allowBlocking = true) const;
533 
545  virtual bool addSubordinate(DtVrfObject* subordinate,
546  DtVrfObject* aggregate);
547 
563  virtual bool removeSubordinate(DtVrfObject* subordinate,
564  DtVrfObject* aggregate);
565 
566  //-------------------------------------------------------
568  //-------------------------------------------------------
569 
576  virtual void assignTask(DtVrfObject* entity, const DtSimTask& task);
577 
585  virtual void sendSetDataRequest(DtVrfObject* entity,
586  const DtSetDataRequest& request);
587 
590  virtual void assignPlanByName(const DtString& name, const DtPlan& plan);
591 
596  virtual void abandonPlan(DtVrfObject* entity);
597 
602  virtual void restartPlan(DtVrfObject* entity);
603 
604  //-------------------------------------------------------
606  //-------------------------------------------------------
607 
611  virtual void logObjectConsoleToFile(DtVrfObject* object,
612  DtFilename filename = DtFilename::nullFilename());
613 
615  virtual void stopLoggingObjectConsoleToFile(DtVrfObject* object);
616 
620  virtual void setObjectConsoleNotificationLevel(DtVrfObject* object,
621  DtNotifyLevelType level);
622 
625  virtual void setPublishZeroVelocityWhenPaused(bool);
626  virtual bool publishZeroVelocityWhenPaused() const;
627 
631  virtual void setSetDeadReckoningAlgorithmToStaticOnPause(bool);
632  virtual bool setDeadReckoningAlgorithmToStaticOnPause() const;
633 
634  //-------------------------------------------------------
636  //-------------------------------------------------------
637 
640  virtual DtSimManager* simManager() const;
641 
643  virtual DtImportExportScenarioDescriptionManager* importExportScenarioDescriptionManager() const;
644 
647  virtual DtResourceMonitor* resourceMonitor() const;
648 
650  virtual DtVrfObjectIdGenerator* vrfObjectIdGenerator() const;
651 
654  virtual DtFactoryManager* factoryManager() const;
655 
658  virtual DtVrfObjectManager* vrfObjectManager() const;
659 
661  virtual DtScriptedTaskManager* scriptedTaskManager() const;
662 
664  virtual DtScenarioEventManager* scenarioEventManager() const;
665 
667  virtual DtHazardAreaManager* hazardAreaManager() const;
668 
670  virtual DtIntelCollectionAreaManager* intelCollectionAreaManager() const;
671 
673  virtual DtScriptedObjectsMovementManager* ScriptedObjectsMovementManager() const;
674 
677  virtual DtAggregateSpatialModel* aggregateSpatialModel() const;
678 
681  virtual DtDetonationManager* detonationManager() const;
682 
685  virtual DtFireManager* fireManager() const;
686 
691  virtual DtScenarioExtrasMgr* scenarioExtrasMgr() const;
692 
694  virtual DtVrfParameterDb* parameterDatabase() const;
695 
697  virtual DtGlobalPlanManager* globalPlanManager();
698 
700  virtual DtStealthCommandsManager* stealthCommandsManager();
701 
704 
705  virtual DtTerrainInterface* terrainInterface();
706  virtual const DtTerrainInterface* terrainInterface() const;
708 
711  virtual void setTerrainInterface(DtTerrainInterface* newTerrainDatabase);
712 
713 
716 
717  virtual DtPhysicalWorld* physicalWorld();
718  virtual const DtPhysicalWorld* physicalWorld() const;
720 
722  virtual void setPhysicalWorld(DtPhysicalWorld* newPhysicalWorld);
723 
725 
726  virtual DtCommModelManager* commModelManager();
727  virtual const DtCommModelManager* commModelManager() const;
729 
731 
732  virtual DtSimTerrainRequestManager* simTerrainRequestManager();
733  virtual const DtSimTerrainRequestManager* simTerrainRequestManager() const;
735 
737 
738  virtual DtDynamicFeaturesManager* dynamicFeaturesManager();
739  virtual const DtDynamicFeaturesManager* dynamicFeaturesManager() const;
741 
743  virtual DtScenario* scenario() const;
744 
747  virtual const DtSimulationAddress& simulationAddress() const;
748 
754  virtual int sessionId() const;
755 
758  virtual DtVrfStatusPublisher* statusPublisher() const;
759 
762  virtual DtExerciseConn* exerciseConn() const;
763 
767  virtual void useMapDatum(const DtMapDatum& mapDatum);
768 
770  virtual void setParameterDbLoaded(bool flag);
771 
772  virtual void setMaxDrainInputTime(DtFloat64 maxTime);
773  virtual DtFloat64 maxDrainInputTime() const;
774 
775 #ifdef DtHLA
776  virtual void setMinDrainInputTime(DtFloat64 minTime);
777  virtual DtFloat64 minDrainInputTime() const;
778 #else
779  virtual void setMaxDrainInputReads(int maxReads);
780  virtual int maxDrainInputReads() const;
781 #endif
782 
783  virtual bool logFrameRateStatistics() const;
784  virtual void setLogFrameRateStatistics(bool yesOrNo);
785  virtual void setFrameRateStatisticsLogFile(const DtFilename&);
786  virtual const DtFilename& frameRateStatisticsLogFile() const;
787 
793  virtual void setDefaultParameterDbDirectory(const DtFilename& filename);
794 
795 #if DtHLA
796 
797 
798  virtual void setRunInTimeManagementMode(bool yesOrNo);
799  virtual bool runInTimeManagementMode() const;
800 
804  static void startTimeManagement(void* usr);
805  static void stopTimeManagement(void* usr);
806 
809  virtual void processStartTimeManagement();
810  virtual void processStopTimeManagement();
811 
812 #endif
813 
814  virtual void setFullyLoadTerrain(bool yesOrNo);
815  virtual bool fullyLoadTerrain() const;
816 
820 
821  virtual void setAssertOnBlockingTerrainCalls(bool b);
822  virtual bool assertOnBlockingTerrainCalls() const;
824 
825  //-------------------------------------------------------
827  //-------------------------------------------------------
828 
831  virtual void addPluginToLoad(const DtString&);
832 
835  virtual void setLoadPluginsIfVersionMismatch(bool);
836  virtual bool loadPluginsIfVersionMismatch() const;
837 
839 
840  DtVrfCreator* vrfCreator();
841  const DtVrfCreator* vrfCreator() const;
843 
847 
848  virtual void addPreLoadTerrainCallback(
850  virtual void removePreLoadTerrainCallback(
853 
857 
858  virtual void addPostLoadTerrainCallback(
860  virtual void removePostLoadTerrainCallback(
863 
866  virtual void runForDuration(double);
867 
869  virtual void stopSimulationDurationTimer();
870 
872  static void runDurationCompleteCallback(void*);
873  virtual void processRunDurationComplete();
874 
876  virtual void setPublishingGlobalEnvironment(bool);
877 
881 
882  virtual void addPreLoadScenarioCallback(
884  virtual void removePreLoadScenarioCallback(
887 
891 
892  virtual void addPostLoadScenarioCallback(
894  virtual void removePostLoadScenarioCallback(
897 
900 
901  virtual void addPreSaveScenarioCallback(
903  virtual void removePreSaveScenarioCallback(
906 
909 
910  virtual void addPostSaveScenarioCallback(
912  virtual void removePostSaveScenarioCallback(
915 
918 
919  virtual void addPreCloseScenarioCallback(
921  virtual void removePreCloseScenarioCallback(
924 
927 
928  virtual void addPostCloseScenarioCallback(
930  virtual void removePostCloseScenarioCallback(
933 
936 
937  virtual void addScenarioPauseCallback(
939  virtual void removeScenarioPauseCallback(
942 
945 
946  virtual void addScenarioRunCallback(
948  virtual void removeScenarioRunCallback(
951 
954 
955  virtual void addPreScenarioRewindCallback(
957  virtual void removePreScenarioRewindCallback(
960 
963 
964  virtual void addPostScenarioRewindCallback(
966  virtual void removePostScenarioRewindCallback(
969 
972 
973  virtual void addPostTickCallback(
975  virtual void removePostTickCallback(
978 
980 
981  virtual void setTimeToQuit(bool);
982  virtual bool timeToQuit() const;
984 
988  virtual bool executeSimCommand(const DtSimCommand& simCommand);
989 
990 public:
991 
995  static void objectParametersOpCallback(DtSimMessage* msg, void* usr);
996 
997 protected:
999  static void scenarioDescriptionCallback(DtSimMessage*, void* usr);
1000  virtual void processScenarioDescription(DtSimMessage*);
1001 
1003  static void setRunDurationCallback(DtSimMessage*, void* usr);
1004  virtual void processSetRunDuration(DtSimMessage*);
1005 
1007  static void actionCategoriesRequestCallback(DtSimMessage* msg, void* usr);
1008  virtual void processActionCategoriesRequest(DtSimMessage* msg);
1009 
1011  static void scenarioStatusRequestCallback(DtSimMessage* msg, void* usr);
1012  virtual void processScenarioStatusRequest(DtSimMessage* msg);
1013  virtual void sendScenarioStatusMessage();
1014 
1015 private:
1017  DtCgf(const DtCgf& original);
1019  DtCgf& operator=(const DtCgf& original);
1020 
1021 protected:
1023  virtual void loadAllPlugins();
1024 
1026  virtual bool loadComponentAttachmentTable(const DtFilename& filename);
1032  virtual bool loadTerrain(const DtFilename& filename);
1033 
1037  virtual DtFilename findTerrainFile(const DtFilename& startFile, const std::vector<DtFilename>& searchPaths,
1038  const std::string& extension) const;
1039 
1042  virtual void unloadTerrain();
1043 
1045  virtual bool loadOrderOfBattle(const DtFilename& filename);
1046 
1048  virtual bool loadScenarioScripts(const DtFilename& filename);
1049 
1053  virtual bool loadParameterDb(const DtFilename& filename,
1054  const DtReaderWriter::SearchPaths& searchPaths);
1055 
1058  virtual bool loadObjectParametersDBFile(const DtFilename& opdFile,
1059  const DtReaderWriter::SearchPaths& searchPaths);
1060 
1064  virtual bool loadPhysicalWorldFile(const DtFilename& file, bool force = false);
1065 
1067  virtual bool loadPlans(const DtFilename& filename);
1068 
1070  virtual bool loadGlobalPlans(const DtFilename& filename);
1071 
1073  virtual void loadHostilityAndExtras(const DtScenarioExplorer& se);
1074 
1077  virtual void loadActivities(const DtScenarioExplorer&);
1078 
1081  virtual void loadModelSetFiles(const DtScenarioExplorer&);
1082 
1085  virtual void loadActionCategories(const DtFilename& f);
1086 
1087  virtual bool loadForceHostility(const DtFilename& filename, bool clear = true);
1088 
1089  virtual bool loadScenarioExtras(const DtFilename& filename);
1090 
1093  virtual void processObjectParametersOp(DtSimMessage * msg);
1094 
1095 
1098  virtual void emptyParametersDB();
1099 
1110  virtual void setFrameRateMode(const DtString& mode, DtReal deltaTime);
1111 
1113  virtual void setAutoReorganization(bool onOff);
1114 
1117  virtual void drainInput();
1118 
1122  virtual DtVrfPlugin* loadPlugin(const DtString&);
1123 
1128 #if DtHLA
1129  DtHlaExerciseClock* exerciseClock() const;
1130 #else
1131  DtExerciseClock* exerciseClock() const;
1132 #endif
1133 
1136  virtual bool setupCommModelsForScenario(const DtScenarioExplorer& e);
1137 
1141  virtual void updateReadyStatus();
1142 
1144  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1145  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo&, void* usr);
1146 
1149 
1150  static void simCommandCallback(DtSimMessage* msg, void* usr);
1151  virtual void processSimCommand(DtSimMessage* msg);
1153 
1157 
1158  static void deferredLoadScenarioCallback(void * data);
1159  virtual void processDeferredLoadScenario();
1161 
1165 
1166  static void deferredRewindCallback(void * data);
1167  virtual void processDeferredRewind();
1169 
1170  //-------------------------------------------------------
1172  //-------------------------------------------------------
1173 
1174  DtOutputLogger& getFrameRateStatsLogger(const DtFilename& newFilename = "");
1175  std::string createStatsLogFilename(
1176  const std::string& originalFilename, const DtSimManager& simManager,
1177  const DtScenario* scenario);
1178  void logScenarioLoad(const DtSimManager& simManager,
1179  const DtScenario* scenario);
1180  void logScenarioRewind();
1181  void logScenarioClose();
1182  void logFrameRateStatsToFile(DtSimManager* simManager);
1183 
1184 protected:
1186 
1188  DtSimulationAddress mySimulationAddress;
1189 
1192 
1194  bool myOK;
1195 
1198 
1201  std::vector<DtString> myPluginsToLoad;
1203 
1206 
1209 
1211 
1213 
1215 
1217  DtExerciseConn* myExerciseConn;
1218 
1221 
1224 
1227 
1230 
1232 
1240 
1242 
1245 
1247  DtVrfObjectIdGenerator* myVrfObjectIdGenerator;
1248 
1251 
1254 
1257 
1259 
1262 
1264 
1266 
1269 
1272 
1278 
1283 
1286 
1289 
1292 
1295 
1298 
1301 
1305 
1308 
1313 
1327 
1329 #if DtHLA
1331 #else
1332  int myMaxDrainInputReads;
1333 #endif
1334 
1339  void setVrfCreator(DtVrfCreator* creator);
1341 
1343 
1344  bool ownVrfCreator() const;
1345  void setOwnVrfCreator(bool yesOrNo);
1347 
1348 protected:
1351 
1354 
1357 
1362 
1363 #if DtHLA
1365 #endif
1366 
1369 
1374 
1378 #if DtHLA
1380 #else
1381  DtExerciseClock* myExerciseClockPtr;
1382 #endif
1383 
1387 
1392 
1397 
1400 
1402 
1405  typedef std::pair<std::string, bool> ActionCategory;
1406  typedef std::map<std::string, ActionCategory> ActionCategories;
1408 
1411 
1416 
1421 };
1422 

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)