VR-Forces Development_Version 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>
26 #include "vrfutil/scenario.h"
28 #include "vrfutil/outputLogger.h"
29 #include "vrfutil/rwActivities.h"
30 #include <boost/unordered_set.hpp>
31 
32 class DtAdminContent;
33 class DtIfScenarioStatus;
35 class DtExerciseConn;
36 class DtScenario;
37 class DtScenarioExplorer;
38 class DtPhysicalWorld;
40 class DtCommModelManager;
41 class DtTerrainInterface;
42 class DtVrfCreator;
43 class DtSimManager;
53 class DtFireManager;
55 class DtJoyDeviceManager;
56 class DtHostilityManager;
58 class DtCustomReportManager;
60 class DtFactoryManager;
61 class DtVrfObject;
62 class DtObjectType;
63 class DtList;
64 class DtSimTask;
65 class DtSetDataRequest;
66 class DtPlan;
67 class DtPaperMapDatabase;
68 class DtMapDatum;
69 class DtVrfParameterDb;
70 class DtSimMessage;
71 class DtResourceMonitor;
73 class DtVrfPlugin;
74 class DtVrfPluginManager;
75 class DtHlaExerciseClock;
76 class DtExerciseClock;
77 class DtSimCommand;
83 class DtTimer;
85 class DtSpawnSinkManager;
86 
99 #include "vrfcgf/vrfcgfDefines.h"
101 {
102 public:
103 
110  DtCgf(const DtSimulationAddress& addr, DtU32 sessionId = 1);
111 
135  virtual void init(DtExerciseConn* conn, DtVrfCreator* creator = 0,
136  int entityAdvisory = 100);
137 
139  virtual ~DtCgf();
140 
142  virtual const DtVrfSimOptionsInterface* simOptions() const;
143 
145  virtual void setSimOptions(const DtVrfSimOptionsInterface&);
146 
149  virtual void tick();
150 
153  virtual void sendFinalStatus();
154 
155  //-------------------------------------------------------
157  //-------------------------------------------------------
158 
160  virtual bool importScenarioDescriptionFile(const DtFilename& file, const DtString& format,
161  const std::map<std::string, std::string>& importData);
162 
166  virtual DtString exportScenarioDescriptionFile(const DtFilename& file, const DtString& format,
167  const std::map<std::string, std::string>& exportData);
168 
170  virtual void setAppDataDir(const DtString&);
171  virtual const DtString& appDataDir() const;
172 
174  virtual void setUserDataDir(const DtString&);
175  virtual const DtString& userDataDir() const;
176 
178  virtual void setDataDir(const DtString&);
179  virtual const DtString& dataDir() const;
180 
184  virtual bool loadScenario(const DtFilename& name);
185 
192  virtual bool loadScenario(const DtScenario& scenario);
193 
196  virtual bool importScenario(const DtScenario&);
197  virtual bool importScenario(const DtFilename&);
198 
205  virtual bool newScenario(const DtFilename& dbname =
206  DtFilename::nullFilename(), const DtFilename& simulationModelSet =
207  DtFilename::nullFilename());
208 
212  virtual bool saveScenario(const DtFilename& savename);
213 
217  virtual bool saveSimulationObjectGroup(DtFilename saveFolder, const DtString& groupName,
218  int flags, boost::unordered_set<DtUUID>& uuidsSaved);
219 
224  virtual bool createSimulationObjectGroup(const DtString& group, int flags, int force, const DtVector& geocentricLocation,
225  double offsetRotation);
226 
231  virtual void closeScenario(const DtFilename& terrainToOpen = "");
232 
237  virtual bool loadAdditionalObjectParameters(const DtFilename& paramsFileName,
238  const DtReaderWriter::SearchPaths& searchPaths);
239 
242  virtual void run();
243 
245  virtual void pause();
246 
252  virtual void rewind();
253 
258 
259  virtual void setForceParameterDbReload(bool reload);
260  virtual bool forceParameterDbReload() const;
262 
266 
267  virtual void setEnableResourceMonitor(bool b);
268  virtual bool isResourceMonitorEnabled() const;
270 
274  virtual void setSmsValidationEnabled(bool b);
275 
287 
288  virtual const DtFilename& defaultTerrainDirectory();
289  virtual void setDefaultTerrainDirectory(const DtFilename& directory);
291 
296 
297  virtual const DtFilename& defaultSimulationModelSetFilename();
298  virtual void setDefaultSimulationModelSetFilename(const DtFilename& filename);
300 
302 
303  virtual void setUseDIGuy(bool diguy);
304  virtual bool useDIGuy() const;
306 
311 
312  virtual const DtFilename& diGuyCharacterDataFilename();
313  virtual void setDIGuyCharacterDataFilename(const DtFilename& filename);
314 
315  virtual const DtFilename& diGuyAnimationsFilename();
316  virtual void setDIGuyAnimationsFilename(const DtFilename& filename);
318 
320 
321  virtual void setMsdlSidcMappingFile(const DtFilename&);
322  virtual const DtFilename& msdlSidcMappingFile() const;
324 
326 
327  virtual void setCountryCodesMappingFile(const DtFilename&);
328  virtual const DtFilename& countryCodesMappingFile() const;
330 
333  virtual DtSimulationModelSet* defaultModelSet();
334 
335  //-------------------------------------------------------
337  //-------------------------------------------------------
338 
341  virtual void deleteObject(const DtString& name) const;
342 
345  virtual void deleteObject(const DtEntityIdentifier& objectIdentifier) const;
346 
347  //-------------------------------------------------------
349  //-------------------------------------------------------
350 
352 
363  virtual DtVrfObject* createWaypoint(const DtVector& localPosition,
364  const DtString& uniqueName = DtString::nullString()) const;
365 
367 
380  virtual DtVrfObject* createRoute(const DtList& vertices,
381  const DtString& uniqueName = DtString::nullString()) const;
382 
384 
396  virtual DtVrfObject* createPhaseLine(
397  const DtVector& dbPoint1,
398  const DtVector& dbPoint2,
399  const DtString& uniqueName = DtString::nullString()) const;
400 
402 
414  virtual DtVrfObject* createControlArea(
415  const DtList& vertices,
416  const DtString& uniqueName = DtString::nullString()) const;
417 
419 
431  virtual DtVrfObject* createObstacle(
432  const DtList& vertices,
433  const DtString& uniqueName = DtString::nullString()) const;
434 
436 
449  virtual DtVrfObject* createDisaggregationArea(
450  const DtList& vertices,
451  const DtString& uniqueName = DtString::nullString()) const;
452 
453  //-------------------------------------------------------
455  //-------------------------------------------------------
456 
458 
487  virtual DtVrfObject* createEntity(
488  const DtEntityType& entityType,
489  DtForceType force,
490  const DtVector& dbPosition,
491  DtReal heading,
492  const DtString& entityName = DtString::nullString(),
493  bool allowBlocking = true,
494  std::list<DtAdminContent*>* initialAdminContent = 0) const;
495 
496 
498 
529  virtual DtVrfObject* createAggregate(
530  const DtEntityType& aggregateType,
531  DtForceType force,
532  const DtVector& localPosition,
533  DtReal heading,
534  const std::vector<DtUUID>& subordinates = std::vector<DtUUID>(),
535  const DtString& aggregateName = DtString::nullString()) const;
536 
548  virtual DtVrfObject* createAggregate(
549  const DtEntityType& aggregateType,
550  DtForceType force,
551  const DtVector& localPosition,
552  DtReal heading,
553  bool createSubordinates,
554  const DtString& aggregateName = DtString::nullString(),
555  bool allowBlocking = true) const;
556 
568  virtual bool addSubordinate(DtVrfObject* subordinate,
569  DtVrfObject* aggregate);
570 
586  virtual bool removeSubordinate(DtVrfObject* subordinate,
587  DtVrfObject* aggregate);
588 
589  //-------------------------------------------------------
591  //-------------------------------------------------------
592 
599  virtual void assignTask(DtVrfObject* entity, const DtSimTask& task);
600 
608  virtual void sendSetDataRequest(DtVrfObject* entity,
609  const DtSetDataRequest& request);
610 
613  virtual void assignPlanByUUID(const DtUUID&, const DtPlan& plan);
614 
619  virtual void abandonPlan(DtVrfObject* entity);
620 
625  virtual void restartPlan(DtVrfObject* entity);
626 
627  //-------------------------------------------------------
629  //-------------------------------------------------------
630 
634  virtual void logObjectConsoleToFile(DtVrfObject* object,
635  DtFilename filename = DtFilename::nullFilename());
636 
638  virtual void stopLoggingObjectConsoleToFile(DtVrfObject* object);
639 
643  virtual void setObjectConsoleNotificationLevel(DtVrfObject* object,
644  DtNotifyLevelType level);
645 
648  virtual void setPublishZeroVelocityWhenPaused(bool);
649  virtual bool publishZeroVelocityWhenPaused() const;
650 
654  virtual void setSetDeadReckoningAlgorithmToStaticOnPause(bool);
655  virtual bool setDeadReckoningAlgorithmToStaticOnPause() const;
656 
662  virtual bool reuseEntityIdentifiersOnScenarioLoad() const;
663  virtual void setReuseEntityIdentifiersOnScenarioLoad(bool);
664 
666  virtual void setTaskVisualizationPublicationMode(DtTaskVisualizationPublicationMode mode);
667  virtual DtTaskVisualizationPublicationMode taskVisualizationPublicationMode() const;
668 
671  virtual void setUseDrawControlForTaskVisualizations(bool);
672  virtual bool useDrawControlForTaskVisualizations() const;
673 
674  //-------------------------------------------------------
676  //-------------------------------------------------------
677 
680  virtual DtSimManager* simManager() const;
681 
683  virtual DtImportExportScenarioDescriptionManager* importExportScenarioDescriptionManager() const;
684 
687  virtual DtResourceMonitor* resourceMonitor() const;
688 
690  virtual DtVrfObjectIdGenerator* vrfObjectIdGenerator() const;
691 
694  virtual DtFactoryManager* factoryManager() const;
695 
698  virtual DtVrfObjectManager* vrfObjectManager() const;
699 
701  virtual DtScriptedTaskManager* scriptedTaskManager() const;
702 
704  virtual DtScenarioEventManager* scenarioEventManager() const;
705 
707  virtual DtHazardAreaManager* hazardAreaManager() const;
708 
710  virtual DtIntelCollectionAreaManager* intelCollectionAreaManager() const;
711 
713  virtual DtScriptedObjectsMovementManager* ScriptedObjectsMovementManager() const;
714 
717  virtual DtAggregateSpatialModel* aggregateSpatialModel() const;
718 
721  virtual DtDetonationManager* detonationManager() const;
722 
725  virtual DtFireManager* fireManager() const;
726 
731  virtual DtScenarioExtrasMgr* scenarioExtrasMgr() const;
732 
734  virtual DtVrfParameterDb* parameterDatabase() const;
735 
737  virtual DtGlobalPlanManager* globalPlanManager();
738 
740  virtual DtStealthCommandsManager* stealthCommandsManager();
741 
744 
745  virtual DtTerrainInterface* terrainInterface();
746  virtual const DtTerrainInterface* terrainInterface() const;
748 
751 
752  virtual DtPhysicalWorld* physicalWorld();
753  virtual const DtPhysicalWorld* physicalWorld() const;
755 
757  virtual void setPhysicalWorld(DtPhysicalWorld* newPhysicalWorld);
758 
759  virtual DtVrfNavAreaManager* vrfNavAreaManager();
760  virtual const DtVrfNavAreaManager* vrfNavAreaManager() const;
761 
762  virtual void setVrfNavAreaManager(DtVrfNavAreaManager* newVrfNavAreaManager);
763 
764  virtual DtSpawnSinkManager* spawnSinkManager();
765  virtual const DtSpawnSinkManager* spawnSinkManager() const;
766 
768 
769  virtual DtCommModelManager* commModelManager();
770  virtual const DtCommModelManager* commModelManager() const;
772 
774 
775  virtual DtSimTerrainRequestManager* simTerrainRequestManager();
776  virtual const DtSimTerrainRequestManager* simTerrainRequestManager() const;
778 
780  virtual DtScenario* scenario() const;
781 
784  virtual const DtSimulationAddress& simulationAddress() const;
785 
791  virtual int sessionId() const;
792 
795  virtual DtVrfStatusPublisher* statusPublisher() const;
796 
799  virtual DtExerciseConn* exerciseConn() const;
800 
804  virtual void useMapDatum(const DtMapDatum& mapDatum);
805 
807  virtual void setParameterDbLoaded(bool flag);
808 
809  virtual void setMaxDrainInputTime(DtFloat64 maxTime);
810  virtual DtFloat64 maxDrainInputTime() const;
811 
812 #ifdef DtHLA
813  virtual void setMinDrainInputTime(DtFloat64 minTime);
814  virtual DtFloat64 minDrainInputTime() const;
815 #else
816  virtual void setMaxDrainInputReads(int maxReads);
817  virtual int maxDrainInputReads() const;
818 #endif
819 
820  virtual bool logFrameRateStatistics() const;
821  virtual void setLogFrameRateStatistics(bool yesOrNo);
822 
828  virtual void setDefaultParameterDbDirectory(const DtFilename& filename);
829 
831  virtual DtFilename objectGroupsRoot() const;
832 
833 #if DtHLA
834 
835 
836  virtual void setRunInTimeManagementMode(bool yesOrNo);
837  virtual bool runInTimeManagementMode() const;
838 
842  static void startTimeManagement(void* usr);
843  static void stopTimeManagement(void* usr);
844 
847  virtual void processStartTimeManagement();
848  virtual void processStopTimeManagement();
849 
850 #endif
851 
852  virtual void setFullyLoadTerrain(bool yesOrNo);
853  virtual bool fullyLoadTerrain() const;
854 
858 
859  virtual void setAssertOnBlockingTerrainCalls(bool b);
860  virtual bool assertOnBlockingTerrainCalls() const;
862 
863  //-------------------------------------------------------
865  //-------------------------------------------------------
866 
869  virtual void addPluginToLoad(const DtString&);
870 
873  virtual void setLoadPluginsIfVersionMismatch(bool);
874  virtual bool loadPluginsIfVersionMismatch() const;
875 
877 
878  DtVrfCreator* vrfCreator();
879  const DtVrfCreator* vrfCreator() const;
881 
885 
886  virtual void addPreLoadTerrainCallback(
888  virtual void removePreLoadTerrainCallback(
891 
895 
896  virtual void addPostLoadTerrainCallback(
898  virtual void removePostLoadTerrainCallback(
901 
904  virtual void runForDuration(double);
905 
907  virtual void stopSimulationDurationTimer();
908 
910  static void runDurationCompleteCallback(void*);
911  virtual void processRunDurationComplete();
912 
914  virtual void setPublishingGlobalEnvironment(bool);
915 
919 
920  virtual void addPreLoadScenarioCallback(
922  virtual void removePreLoadScenarioCallback(
925 
927 
928  virtual void addPreCreateSimulationObjectGroupCallback(
930  virtual void removePreCreateSimulationObjectGroupCallback(
933 
937 
938  virtual void addPostLoadScenarioCallback(
940  virtual void removePostLoadScenarioCallback(
943 
945 
946  virtual void addPostCreateSimulationObjectGroupCallback(
948  virtual void removePostCreateSimulationObjectGroupCallback(
951 
953 
954  virtual void addPreImportScenarioCallback(
956  virtual void removePreImportScenarioCallback(
959 
961 
962  virtual void addPostImportScenarioCallback(
964  virtual void removePostImportScenarioCallback(
967 
970 
971  virtual void addPreSaveScenarioCallback(
973  virtual void removePreSaveScenarioCallback(
976 
979 
980  virtual void addPostSaveScenarioCallback(
982  virtual void removePostSaveScenarioCallback(
985 
988 
989  virtual void addPreCloseScenarioCallback(
991  virtual void removePreCloseScenarioCallback(
994 
997 
998  virtual void addPostCloseScenarioCallback(
1000  virtual void removePostCloseScenarioCallback(
1003 
1005 
1006  virtual void addPreSaveSimulationObjectGroupsCallback(
1008  virtual void removePreSaveSimulationObjectGroupsCallback(
1011 
1013 
1014  virtual void addPostSaveSimulationObjectGroupsCallback(
1016  virtual void removePostSaveSimulationObjectGroupsCallback(
1019 
1022 
1023  virtual void addScenarioPauseCallback(
1025  virtual void removeScenarioPauseCallback(
1028 
1031 
1032  virtual void addScenarioRunCallback(
1034  virtual void removeScenarioRunCallback(
1037 
1040 
1041  virtual void addPreScenarioRewindCallback(
1043  virtual void removePreScenarioRewindCallback(
1046 
1049 
1050  virtual void addPostScenarioRewindCallback(
1052  virtual void removePostScenarioRewindCallback(
1055 
1058 
1059  virtual void addPostTickCallback(
1061  virtual void removePostTickCallback(
1064 
1066 
1067  virtual void setTimeToQuit(bool);
1068  virtual bool timeToQuit() const;
1070 
1074  virtual bool executeSimCommand(const DtSimCommand& simCommand);
1075 
1076 public:
1077 
1081  static void objectParametersOpCallback(DtSimMessage* msg, void* usr);
1082 
1083 protected:
1085  static void scenarioDescriptionCallback(DtSimMessage*, void* usr);
1086  virtual void processScenarioDescription(DtSimMessage*);
1087 
1089  static void setRunDurationCallback(DtSimMessage*, void* usr);
1090  virtual void processSetRunDuration(DtSimMessage*);
1091 
1093  static void actionCategoriesRequestCallback(DtSimMessage* msg, void* usr);
1094  virtual void processActionCategoriesRequest(DtSimMessage* msg);
1095 
1097  static void scenarioStatusRequestCallback(DtSimMessage* msg, void* usr);
1098  virtual void processScenarioStatusRequest(DtSimMessage* msg);
1099  virtual void sendScenarioStatusMessage();
1100 
1101 private:
1103  DtCgf(const DtCgf& original);
1105  DtCgf& operator=(const DtCgf& original);
1106 
1107 protected:
1109  virtual void loadAllPlugins();
1110 
1112  virtual bool loadComponentAttachmentTable(const DtFilename& filename);
1118  virtual bool loadTerrain(const DtFilename& filename);
1119 
1123  virtual DtFilename findTerrainFile(const DtFilename& startFile, const std::vector<DtFilename>& searchPaths,
1124  const std::string& extension) const;
1125 
1128  virtual void unloadTerrain();
1129 
1131  virtual bool loadOrderOfBattle(const DtFilename& filename);
1132 
1134  virtual bool loadScenarioScripts(const DtFilename& filename);
1135 
1139  virtual bool loadParameterDb(const DtFilename& filename,
1140  const DtReaderWriter::SearchPaths& searchPaths, bool clearLoadedObjects = true);
1141 
1144  virtual bool loadObjectParametersDBFile(const DtFilename& opdFile,
1145  const DtReaderWriter::SearchPaths& searchPaths, bool clearLoadedObjects = true);
1146 
1150  virtual bool loadPhysicalWorldFile(const DtFilename& file, bool force = false);
1151 
1153  virtual bool loadPlans(const DtFilename& filename);
1154 
1156  virtual bool loadGlobalPlans(const DtFilename& filename);
1157 
1159  virtual void loadHostilityAndExtras(const DtScenarioExplorer& se);
1160 
1163  virtual void loadActivities(const DtScenarioExplorer&);
1164 
1167  virtual void loadModelSetFiles(const DtScenarioExplorer&);
1168 
1171  virtual void loadActionCategories(const DtFilename& f);
1172 
1173  virtual bool loadForceHostility(const DtFilename& filename, bool clear = true);
1174 
1175  virtual bool loadScenarioExtras(const DtFilename& filename);
1176 
1179  virtual void processObjectParametersOp(DtSimMessage * msg);
1180 
1181 
1184  virtual void emptyParametersDB();
1185 
1196  virtual void setFrameRateMode(const DtString& mode, DtReal deltaTime);
1197 
1199  virtual void setAutoReorganization(bool onOff);
1200 
1203  virtual void drainInput();
1204 
1208  virtual DtVrfPlugin* loadPlugin(const DtString&);
1209 
1214 #if DtHLA
1215  DtHlaExerciseClock* exerciseClock() const;
1216 #else
1217  DtExerciseClock* exerciseClock() const;
1218 #endif
1219 
1222  virtual bool setupCommModelsForScenario(const DtScenarioExplorer& e);
1223 
1227  virtual void updateReadyStatus();
1228 
1230  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1231  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo&, void* usr);
1232 
1235 
1236  static void simCommandCallback(DtSimMessage* msg, void* usr);
1237  virtual void processSimCommand(DtSimMessage* msg);
1239 
1243 
1244  static void deferredLoadScenarioCallback(void * data);
1245  virtual void processDeferredLoadScenario();
1247 
1251 
1252  static void deferredImportScenarioCallback(void * data);
1253  virtual void processDeferredImportScenario();
1255 
1259 
1260  static void deferredRewindCallback(void * data);
1261  virtual void processDeferredRewind();
1263 
1264  //-------------------------------------------------------
1266  //-------------------------------------------------------
1267 
1268  void rolloverStatsLogFilename(const DtScenario* scenario);
1269 
1270  void logScenarioLoad(const DtScenario* scenario);
1271  void logScenarioRewind();
1272  void logScenarioClose();
1273 
1274 protected:
1276 
1278  DtSimulationAddress mySimulationAddress;
1279 
1282 
1284  bool myOK;
1285 
1288 
1291  std::vector<DtString> myPluginsToLoad;
1293 
1296 
1299 
1301 
1303 
1305 
1307 
1309  DtExerciseConn* myExerciseConn;
1310 
1313 
1316 
1319 
1322 
1324 
1332 
1334 
1337 
1340 
1343 
1346 
1349 
1351 
1353 
1355 
1358 
1361 
1367 
1372 
1375 
1378 
1381 
1384 
1387 
1390 
1394 
1397 
1402 
1413 
1416 
1424 
1426 #if DtHLA
1428 #else
1429  int myMaxDrainInputReads;
1430 #endif
1431 
1436  void setVrfCreator(DtVrfCreator* creator);
1438 
1440 
1441  bool ownVrfCreator() const;
1442  void setOwnVrfCreator(bool yesOrNo);
1444 
1445 protected:
1450 
1451 #if DtHLA
1453 #endif
1454 
1457 
1462 
1466 #if DtHLA
1468 #else
1469  DtExerciseClock* myExerciseClockPtr;
1470 #endif
1471 
1475 
1480 
1485 
1488 
1490 
1493  typedef std::pair<std::string, bool> ActionCategory;
1494  typedef std::map<std::string, ActionCategory> ActionCategories;
1496 
1499 
1504 
1507 
1509 
1516 
1517  std::vector<DtFilename> myObjectGroupsRoot;
1518 
1520  {
1521  DtlObjPtr planArgs;
1522  DtlObjPtr oobArgs;
1523  };
1524 
1525  std::set<DtGlobalObjectDesignator> myRemoteObjectGlobalIds;
1526 
1527  typedef std::map<DtString, SimulationObjectGroupInformation> StoredSimulationObjectGroupInformation;
1529 };
1530 

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)