VR-Forces 4.2 Class Documentation
cgf.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 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 
18 #include <vlutil/vlFilename.h>
19 #include <vlutil/vlTime.h>
20 #include <vl/hostStructs.h>
21 #include <vector>
22 #include <vlutil/vlPrint.h>
23 #include "vrfutil/callbackList.h"
24 #include "vrfutil/scenario.h"
26 #include "vrfutil/outputLogger.h"
27 
28 class DtAdminContent;
30 class DtExerciseConn;
31 class DtScenario;
32 class DtScenarioExplorer;
33 class DtPhysicalWorld;
34 class DtCommModelManager;
35 class DtTerrainInterface;
36 class DtVrfCreator;
37 class DtSimManager;
41 class DtVrfObjectManager;
44 class DtFireManager;
46 class DtJoyDeviceManager;
47 class DtHostilityManager;
49 class DtCustomReportManager;
50 class DtFactoryManager;
51 class DtVrfObject;
52 class DtObjectType;
53 class DtList;
54 class DtSimTask;
55 class DtSetDataRequest;
56 class DtPlan;
57 class DtPaperMapDatabase;
58 class DtMapDatum;
59 class DtStealthRemoteController;
60 class DtVrfParameterDb;
61 class DtSimMessage;
62 class DtResourceMonitor;
63 class DtVrfObjectIdGenerator;
64 class DtVrfPlugin;
65 class DtVrfPluginManager;
66 class DtHlaExerciseClock;
67 class DtExerciseClock;
68 class DtSimCommand;
73 
86 #include "vrfcgf/vrfcgfDefines.h"
88 {
89 public:
90 
97  DtCgf(const DtSimulationAddress& addr, DtU32 sessionId = 1);
98 
122  virtual void init(DtExerciseConn* conn, DtVrfCreator* creator = 0,
123  int entityAdvisory = 100);
124 
126  virtual ~DtCgf();
127 
130  virtual void tick();
131 
134  virtual void sendFinalStatus();
135 
136  //-------------------------------------------------------
138  //-------------------------------------------------------
139 
141  virtual bool importScenarioDescriptionFile(const DtFilename& file, const DtString& format,
142  const std::map<std::string, std::string>& importData);
143 
147  virtual DtString exportScenarioDescriptionFile(const DtFilename& file, const DtString& format,
148  const std::map<std::string, std::string>& exportData);
149 
153  virtual bool loadScenario(const DtFilename& name);
154 
161  virtual bool loadScenario(const DtScenario& scenario);
162 
169  virtual bool newScenario(const DtFilename& dbname =
170  DtFilename::nullFilename(), const DtFilename& simulationModelSet =
171  DtFilename::nullFilename());
172 
176  virtual bool saveScenario(const DtFilename& savename);
177 
182  virtual void closeScenario(const DtFilename& terrainToOpen = "");
183 
187  virtual bool loadAdditionalObjectParameters(const DtFilename& paramsFileName);
188 
191  virtual void loadCoreSimulationModelSets();
192 
195  virtual void run();
196 
198  virtual void pause();
199 
205  virtual void rewind();
206 
211 
212  virtual void setForceParameterDbReload(bool reload);
213  virtual bool forceParameterDbReload() const;
215 
219 
220  virtual void setEnableResourceMonitor(bool b);
221  virtual bool isResourceMonitorEnabled() const;
223 
225 #ifdef WIN32
226  virtual void setAppInstance(HINSTANCE hInstance);
227  virtual void setConsoleWindow(HWND consoleWindow);
228 #endif
229 
241 
242  virtual const DtFilename& defaultTerrainDirectory();
243  virtual void setDefaultTerrainDirectory(const DtFilename& directory);
245 
250 
251  virtual const DtFilename& defaultSimulationModelSetFilename();
252  virtual void setDefaultSimulationModelSetFilename(const DtFilename& filename);
254 
256 
257  virtual void setUseDIGuy(bool diguy);
258  virtual bool useDIGuy() const;
260 
265 
266  virtual const DtFilename& diGuyCharacterDataFilename();
267  virtual void setDIGuyCharacterDataFilename(const DtFilename& filename);
268 
269  virtual const DtFilename& diGuyAnimationsFilename();
270  virtual void setDIGuyAnimationsFilename(const DtFilename& filename);
272 
274 
275  virtual void setMsdlSIDCMappingFile(const DtFilename&);
276  virtual const DtFilename& msdlSIDCMappingFile() const;
278 
280 
281  virtual void setCountryCodesMappingFile(const DtFilename&);
282  virtual const DtFilename& countryCodesMappingFile() const;
284 
287  virtual DtSimulationModelSet* defaultModelSet();
288 
289  //-------------------------------------------------------
291  //-------------------------------------------------------
292 
295  virtual void deleteObject(const DtString& name) const;
296 
299  virtual void deleteObject(const DtEntityIdentifier& objectIdentifier) const;
300 
301  //-------------------------------------------------------
303  //-------------------------------------------------------
304 
306 
317  virtual DtVrfObject* createWaypoint(const DtVector& localPosition,
318  const DtString& uniqueName = DtString::nullString()) const;
319 
321 
334  virtual DtVrfObject* createRoute(const DtList& vertices,
335  const DtString& uniqueName = DtString::nullString()) const;
336 
338 
350  virtual DtVrfObject* createPhaseLine(
351  const DtVector& dbPoint1,
352  const DtVector& dbPoint2,
353  const DtString& uniqueName = DtString::nullString()) const;
354 
356 
368  virtual DtVrfObject* createControlArea(
369  const DtList& vertices,
370  const DtString& uniqueName = DtString::nullString()) const;
371 
373 
385  virtual DtVrfObject* createObstacle(
386  const DtList& vertices,
387  const DtString& uniqueName = DtString::nullString()) const;
388 
390 
403  virtual DtVrfObject* createDisaggregationArea(
404  const DtList& vertices,
405  const DtString& uniqueName = DtString::nullString()) const;
406 
407  //-------------------------------------------------------
409  //-------------------------------------------------------
410 
412 
441  virtual DtVrfObject* createEntity(
442  const DtEntityType& entityType,
443  DtForceType force,
444  const DtVector& dbPosition,
445  DtReal heading,
446  const DtString& entityName = DtString::nullString(),
447  bool allowBlocking = true,
448  std::list<DtAdminContent*>* initialAdminContent = 0) const;
449 
450 
452 
483  virtual DtVrfObject* createAggregate(
484  const DtEntityType& aggregateType,
485  DtForceType force,
486  const DtVector& localPosition,
487  DtReal heading,
488  DtList* subordinateNames = 0,
489  const DtString& aggregateName = DtString::nullString()) const;
490 
502  virtual DtVrfObject* createAggregate(
503  const DtEntityType& aggregateType,
504  DtForceType force,
505  const DtVector& localPosition,
506  DtReal heading,
507  bool createSubordinates,
508  const DtString& aggregateName = DtString::nullString(),
509  bool allowBlocking = true) const;
510 
522  virtual bool addSubordinate(DtVrfObject* subordinate,
523  DtVrfObject* aggregate);
524 
540  virtual bool removeSubordinate(DtVrfObject* subordinate,
541  DtVrfObject* aggregate);
542 
543  //-------------------------------------------------------
545  //-------------------------------------------------------
546 
553  virtual void assignTask(DtVrfObject* entity, const DtSimTask& task);
554 
562  virtual void sendSetDataRequest(DtVrfObject* entity,
563  const DtSetDataRequest& request);
564 
567  virtual void assignPlanByName(const DtString& name, const DtPlan& plan);
568 
573  virtual void abandonPlan(DtVrfObject* entity);
574 
579  virtual void restartPlan(DtVrfObject* entity);
580 
581  //-------------------------------------------------------
583  //-------------------------------------------------------
584 
588  virtual void logObjectConsoleToFile(DtVrfObject* object,
589  DtFilename filename = DtFilename::nullFilename());
590 
592  virtual void stopLoggingObjectConsoleToFile(DtVrfObject* object);
593 
597  virtual void setObjectConsoleNotificationLevel(DtVrfObject* object,
598  DtNotifyLevelType level);
599 
600  //-------------------------------------------------------
602  //-------------------------------------------------------
603 
606  virtual DtSimManager* simManager() const;
607 
609  virtual DtImportExportScenarioDescriptionManager* importExportScenarioDescriptionManager() const;
610 
613  virtual DtResourceMonitor* resourceMonitor() const;
614 
616  virtual DtVrfObjectIdGenerator* vrfObjectIdGenerator() const;
617 
620  virtual DtFactoryManager* factoryManager() const;
621 
624  virtual DtVrfObjectManager* vrfObjectManager() const;
625 
627  virtual DtScriptedTaskManager* scriptedTaskManager() const;
628 
630  virtual DtScriptedObjectsMovementManager* ScriptedObjectsMovementManager() const;
631 
634  virtual DtAggregateSpatialModel* aggregateSpatialModel() const;
635 
638  virtual DtDetonationManager* detonationManager() const;
639 
642  virtual DtFireManager* fireManager() const;
643 
648  virtual DtScenarioExtrasMgr* scenarioExtrasMgr() const;
649 
651  virtual DtVrfParameterDb* parameterDatabase() const;
652 
654  virtual DtGlobalPlanManager* globalPlanManager();
655 
658 
659  virtual DtTerrainInterface* terrainInterface();
660  virtual const DtTerrainInterface* terrainInterface() const;
662 
665  virtual void setTerrainInterface(DtTerrainInterface* newTerrainDatabase);
666 
667 
670 
671  virtual DtPhysicalWorld* physicalWorld();
672  virtual const DtPhysicalWorld* physicalWorld() const;
674 
676  virtual void setPhysicalWorld(DtPhysicalWorld* newPhysicalWorld);
677 
679 
680  virtual DtCommModelManager* commModelManager();
681  virtual const DtCommModelManager* commModelManager() const;
683 
685  virtual DtScenario* scenario() const;
686 
689  virtual const DtSimulationAddress& simulationAddress() const;
690 
696  virtual int sessionId() const;
697 
700  virtual DtVrfStatusPublisher* statusPublisher() const;
701 
704  virtual DtExerciseConn* exerciseConn() const;
705 
707  virtual DtStealthRemoteController* stealthRemoteController() const;
708 
712  virtual void useMapDatum(const DtMapDatum& mapDatum);
713 
715  virtual void setParameterDbLoaded(bool flag);
716 
717  virtual void setMaxDrainInputTime(DtFloat64 maxTime);
718  virtual DtFloat64 maxDrainInputTime() const;
719 
720 #ifdef DtHLA
721  virtual void setMinDrainInputTime(DtFloat64 minTime);
722  virtual DtFloat64 minDrainInputTime() const;
723 #else
724  virtual void setMaxDrainInputReads(int maxReads);
725  virtual int maxDrainInputReads() const;
726 #endif
727 
728  virtual bool logFrameRateStatistics() const;
729  virtual void setLogFrameRateStatistics(bool yesOrNo);
730  virtual void setLogFrameRateOutputDirectory(const DtFilename&);
731  virtual const DtFilename& logFrameRateOutputDirectory() const;
732 
738  virtual void setDefaultParameterDbDirectory(const DtFilename& filename);
739 
740 #if DtHLA
741 
742 
743  virtual void setRunInTimeManagementMode(bool yesOrNo);
744  virtual bool runInTimeManagementMode() const;
745 
749  static void startTimeManagement(void* usr);
750  static void stopTimeManagement(void* usr);
751 
754  virtual void processStartTimeManagement();
755  virtual void processStopTimeManagement();
756 
757 #endif
758 
759  virtual void setFullyLoadTerrain(bool yesOrNo);
760  virtual bool fullyLoadTerrain() const;
761 
765 
766  virtual void setAssertOnBlockingTerrainCalls(bool b);
767  virtual bool assertOnBlockingTerrainCalls() const;
769 
770  //-------------------------------------------------------
772  //-------------------------------------------------------
773 
776  virtual void addPluginToLoad(const DtString&);
777 
780  virtual void setLoadPluginsIfVersionMismatch(bool);
781  virtual bool loadPluginsIfVersionMismatch() const;
782 
784 
785  DtVrfCreator* vrfCreator();
786  const DtVrfCreator* vrfCreator() const;
788 
792 
793  virtual void addPreLoadTerrainCallback(
795  virtual void removePreLoadTerrainCallback(
798 
802 
803  virtual void addPostLoadTerrainCallback(
805  virtual void removePostLoadTerrainCallback(
808 
812 
813  virtual void addPreLoadScenarioCallback(
815  virtual void removePreLoadScenarioCallback(
818 
822 
823  virtual void addPostLoadScenarioCallback(
825  virtual void removePostLoadScenarioCallback(
828 
831 
832  virtual void addPreSaveScenarioCallback(
834  virtual void removePreSaveScenarioCallback(
837 
840 
841  virtual void addPostSaveScenarioCallback(
843  virtual void removePostSaveScenarioCallback(
846 
849 
850  virtual void addPreCloseScenarioCallback(
852  virtual void removePreCloseScenarioCallback(
855 
858 
859  virtual void addPostCloseScenarioCallback(
861  virtual void removePostCloseScenarioCallback(
864 
867 
868  virtual void addScenarioPauseCallback(
870  virtual void removeScenarioPauseCallback(
873 
876 
877  virtual void addScenarioRunCallback(
879  virtual void removeScenarioRunCallback(
882 
885 
886  virtual void addPreScenarioRewindCallback(
888  virtual void removePreScenarioRewindCallback(
891 
894 
895  virtual void addPostScenarioRewindCallback(
897  virtual void removePostScenarioRewindCallback(
900 
903 
904  virtual void addPostTickCallback(
906  virtual void removePostTickCallback(
909 
911 
912  virtual void setTimeToQuit(bool);
913  virtual bool timeToQuit() const;
915 
919  virtual bool executeSimCommand(const DtSimCommand& simCommand);
920 
921 public:
922 
926  static void objectParametersOpCallback(DtSimMessage* msg, void* usr);
927 
928 protected:
930  static void scenarioDescriptionCallback(DtSimMessage*, void* usr);
931  virtual void processScenarioDescription(DtSimMessage*);
932 
934  static void actionCategoriesRequestCallback(DtSimMessage* msg, void* usr);
935  virtual void processActionCategoriesRequest(DtSimMessage* msg);
936 
937 private:
939  DtCgf(const DtCgf& original);
941  DtCgf& operator=(const DtCgf& original);
942 
943 protected:
945  virtual void loadAllPlugins();
946 
948  virtual bool loadComponentAttachmentTable(const DtFilename& filename);
954  virtual bool loadTerrain(const DtFilename& filename);
955 
959  virtual DtFilename findTerrainFile(const DtFilename& startFile, const std::vector<DtFilename>& searchPaths,
960  const std::string& extension) const;
961 
964  virtual void unloadTerrain();
965 
967  virtual bool loadOrderOfBattle(const DtFilename& filename);
968 
970  virtual bool loadScenarioScripts(const DtFilename& filename);
971 
974  virtual bool loadParameterDb(const DtFilename& filename);
975 
977  virtual bool loadObjectParametersDBFile(const DtFilename& opdFile);
978 
982  virtual bool loadPhysicalWorldFile(const DtFilename& file, bool force = false);
983 
985  virtual bool loadPlans(const DtFilename& filename);
986 
988  virtual bool loadGlobalPlans(const DtFilename& filename);
989 
991  virtual void loadHostilityAndExtras(const DtScenarioExplorer& se);
992 
995  virtual void loadModelSetFiles(const DtScenarioExplorer&);
996 
999  virtual void loadActionCategories(const DtFilename& f);
1000 
1001  virtual bool loadForceHostility(const DtFilename& filename);
1002 
1003  virtual bool loadScenarioExtras(const DtFilename& filename);
1004 
1007  virtual void processObjectParametersOp(DtSimMessage * msg);
1008 
1009 
1012  virtual void emptyParametersDB();
1013 
1024  virtual void setFrameRateMode(const DtString& mode, DtReal deltaTime);
1025 
1027  virtual void setAutoReorganization(bool onOff);
1028 
1031  virtual void drainInput();
1032 
1036  virtual DtVrfPlugin* loadPlugin(const DtString&);
1037 
1042 #if DtHLA
1043  DtHlaExerciseClock* exerciseClock() const;
1044 #else
1045  DtExerciseClock* exerciseClock() const;
1046 #endif
1047 
1050  virtual bool setupCommModelsForScenario(const DtScenarioExplorer& e);
1051 
1055  virtual void updateReadyStatus();
1056 
1058  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1059  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo&, void* usr);
1060 
1063 
1064  static void simCommandCallback(DtSimMessage* msg, void* usr);
1065  virtual void processSimCommand(DtSimMessage* msg);
1067 
1071 
1072  static void deferredLoadScenarioCallback(void * data);
1073  virtual void processDeferredLoadScenario();
1075 
1079 
1080  static void deferredRewindCallback(void * data);
1081  virtual void processDeferredRewind();
1083 
1084  //-------------------------------------------------------
1086  //-------------------------------------------------------
1087 
1088  static DtOutputLogger& getGlobalFrameRateStatsLogger();
1089  static std::string createStatsLogFilename(
1090  const std::string& originalFilename, const DtSimManager& simManager,
1091  const DtScenario* scenario, const DtFilename& logFrameRateDir);
1092  static void logScenarioLoad(const DtSimManager& simManager,
1093  const DtScenario* scenario, const DtFilename& logFrameOutDir);
1094  static void logScenarioRewind();
1095  static void logScenarioClose();
1096  static void logFrameRateStatsToFile(DtSimManager* simManager);
1097 
1098 protected:
1099 
1101  DtSimulationAddress mySimulationAddress;
1102 
1105 
1107  bool myOK;
1108 
1111 
1114  std::vector<DtString> myPluginsToLoad;
1116 
1119 
1122 
1124 
1126  DtExerciseConn* myExerciseConn;
1127 
1130 
1133 
1136 
1139 
1141 
1146 
1148 
1151 
1153  DtVrfObjectIdGenerator* myVrfObjectIdGenerator;
1154 
1157 
1160 
1162 
1165 
1167 
1169 
1171  DtStealthRemoteController* myStealthRemoteController;
1172 
1175 
1181 
1186 
1189 
1192 
1195 
1198 
1201 
1204 
1208 
1211 
1216 
1230 
1232 #if DtHLA
1234 #else
1235  int myMaxDrainInputReads;
1236 #endif
1237 
1242  void setVrfCreator(DtVrfCreator* creator);
1244 
1246 
1247  bool ownVrfCreator() const;
1248  void setOwnVrfCreator(bool yesOrNo);
1250 
1251 protected:
1254 
1257 
1262 
1263 #if DtHLA
1265 #endif
1266 
1269 
1274 
1278 #if DtHLA
1280 #else
1281  DtExerciseClock* myExerciseClockPtr;
1282 #endif
1283 
1287 
1292 
1297 
1300 
1302 
1305  typedef std::pair<std::string, bool> ActionCategory;
1306  typedef std::map<std::string, ActionCategory> ActionCategories;
1308 };
1309 

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)