VR-Forces 4.1 Class Documentation
cgf.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 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;
40 class DtVrfObjectManager;
43 class DtFireManager;
45 class DtJoyDeviceManager;
46 class DtHostilityManager;
48 class DtCustomReportManager;
49 class DtFactoryManager;
50 class DtVrfObject;
51 class DtObjectType;
52 class DtList;
53 class DtSimTask;
54 class DtSetDataRequest;
55 class DtPlan;
56 class DtPaperMapDatabase;
57 class DtMapDatum;
59 class DtVrfParameterDb;
60 class DtSimMessage;
61 class DtResourceMonitor;
63 class DtVrfPlugin;
64 class DtVrfPluginManager;
65 class DtHlaExerciseClock;
66 class DtExerciseClock;
67 class DtSimCommand;
72 
83 #include "vrfcgf/vrfcgfDefines.h"
85 {
86 public:
87 
94  DtCgf(const DtSimulationAddress& addr, DtU32 sessionId = 1);
95 
119  virtual void init(DtExerciseConn* conn, DtVrfCreator* creator = 0,
120  int entityAdvisory = 100);
121 
123  virtual ~DtCgf();
124 
127  virtual void tick();
128 
131  virtual void sendFinalStatus();
132 
133  //-------------------------------------------------------
135  //-------------------------------------------------------
136 
138  virtual bool importScenarioDescriptionFile(const DtFilename& file, const DtString& format,
139  const std::map<std::string, std::string>& importData);
140 
144  virtual DtString exportScenarioDescriptionFile(const DtFilename& file, const DtString& format,
145  const std::map<std::string, std::string>& exportData);
146 
150  virtual bool loadScenario(const DtFilename& name);
151 
158  virtual bool loadScenario(const DtScenario& scenario);
159 
166  virtual bool newScenario(const DtFilename& dbname =
167  DtFilename::nullFilename(), const DtFilename& simulationModelSet =
168  DtFilename::nullFilename());
169 
173  virtual bool saveScenario(const DtFilename& savename);
174 
177  virtual void closeScenario();
178 
182  virtual bool loadAdditionalObjectParameters(const DtFilename& paramsFileName);
183 
186  virtual void loadCoreSimulationModelSets();
187 
190  virtual void run();
191 
193  virtual void pause();
194 
200  virtual void rewind();
201 
206 
207  virtual void setForceParameterDbReload(bool reload);
208  virtual bool forceParameterDbReload() const;
210 
214 
215  virtual void setEnableResourceMonitor(bool b);
216  virtual bool isResourceMonitorEnabled() const;
218 
220 #ifdef WIN32
221  virtual void setAppInstance(HINSTANCE hInstance);
222  virtual void setConsoleWindow(HWND consoleWindow);
223 #endif
224 
236 
237  virtual const DtFilename& defaultTerrainDirectory();
238  virtual void setDefaultTerrainDirectory(const DtFilename& directory);
240 
245 
246  virtual const DtFilename& defaultSimulationModelSetFilename();
247  virtual void setDefaultSimulationModelSetFilename(const DtFilename& filename);
249 
251 
252  virtual void setUseDIGuy(bool diguy);
253  virtual bool useDIGuy() const;
255 
260 
261  virtual const DtFilename& diGuyCharacterDataFilename();
262  virtual void setDIGuyCharacterDataFilename(const DtFilename& filename);
263 
264  virtual const DtFilename& diGuyAnimationsFilename();
265  virtual void setDIGuyAnimationsFilename(const DtFilename& filename);
267 
269 
270  virtual void setMsdlSIDCMappingFile(const DtFilename&);
271  virtual const DtFilename& msdlSIDCMappingFile() const;
273 
275 
276  virtual void setCountryCodesMappingFile(const DtFilename&);
277  virtual const DtFilename& countryCodesMappingFile() const;
279 
282  virtual DtSimulationModelSet* defaultModelSet();
283 
284  //-------------------------------------------------------
286  //-------------------------------------------------------
287 
290  virtual void deleteObject(const DtString& name) const;
291 
294  virtual void deleteObject(const DtEntityIdentifier& objectIdentifier) const;
295 
296  //-------------------------------------------------------
298  //-------------------------------------------------------
299 
301 
312  virtual DtVrfObject* createWaypoint(const DtVector& localPosition,
313  const DtString& uniqueName = DtString::nullString()) const;
314 
316 
329  virtual DtVrfObject* createRoute(const DtList& vertices,
330  const DtString& uniqueName = DtString::nullString()) const;
331 
333 
345  virtual DtVrfObject* createPhaseLine(
346  const DtVector& dbPoint1,
347  const DtVector& dbPoint2,
348  const DtString& uniqueName = DtString::nullString()) const;
349 
351 
363  virtual DtVrfObject* createControlArea(
364  const DtList& vertices,
365  const DtString& uniqueName = DtString::nullString()) const;
366 
368 
380  virtual DtVrfObject* createObstacle(
381  const DtList& vertices,
382  const DtString& uniqueName = DtString::nullString()) const;
383 
385 
398  virtual DtVrfObject* createDisaggregationArea(
399  const DtList& vertices,
400  const DtString& uniqueName = DtString::nullString()) const;
401 
402  //-------------------------------------------------------
404  //-------------------------------------------------------
405 
407 
436  virtual DtVrfObject* createEntity(
437  const DtEntityType& entityType,
438  DtForceType force,
439  const DtVector& dbPosition,
440  DtReal heading,
441  const DtString& entityName = DtString::nullString(),
442  bool allowBlocking = true,
443  std::list<DtAdminContent*>* initialAdminContent = 0) const;
444 
445 
447 
478  virtual DtVrfObject* createAggregate(
479  const DtEntityType& aggregateType,
480  DtForceType force,
481  const DtVector& localPosition,
482  DtReal heading,
483  DtList* subordinateNames = 0,
484  const DtString& aggregateName = DtString::nullString()) const;
485 
497  virtual DtVrfObject* createAggregate(
498  const DtEntityType& aggregateType,
499  DtForceType force,
500  const DtVector& localPosition,
501  DtReal heading,
502  bool createSubordinates,
503  const DtString& aggregateName = DtString::nullString(),
504  bool allowBlocking = true) const;
505 
517  virtual bool addSubordinate(DtVrfObject* subordinate,
518  DtVrfObject* aggregate);
519 
535  virtual bool removeSubordinate(DtVrfObject* subordinate,
536  DtVrfObject* aggregate);
537 
538  //-------------------------------------------------------
540  //-------------------------------------------------------
541 
548  virtual void assignTask(DtVrfObject* entity, const DtSimTask& task);
549 
557  virtual void sendSetDataRequest(DtVrfObject* entity,
558  const DtSetDataRequest& request);
559 
562  virtual void assignPlanByName(const DtString& name, const DtPlan& plan);
563 
568  virtual void abandonPlan(DtVrfObject* entity);
569 
574  virtual void restartPlan(DtVrfObject* entity);
575 
576  //-------------------------------------------------------
578  //-------------------------------------------------------
579 
583  virtual void logObjectConsoleToFile(DtVrfObject* object,
584  DtFilename filename = DtFilename::nullFilename());
585 
587  virtual void stopLoggingObjectConsoleToFile(DtVrfObject* object);
588 
592  virtual void setObjectConsoleNotificationLevel(DtVrfObject* object,
593  DtNotifyLevelType level);
594 
595  //-------------------------------------------------------
597  //-------------------------------------------------------
598 
601  virtual DtSimManager* simManager() const;
602 
604  virtual DtImportExportScenarioDescriptionManager* importExportScenarioDescriptionManager() const;
605 
608  virtual DtResourceMonitor* resourceMonitor() const;
609 
611  virtual DtVrfObjectIdGenerator* vrfObjectIdGenerator() const;
612 
615  virtual DtFactoryManager* factoryManager() const;
616 
619  virtual DtVrfObjectManager* vrfObjectManager() const;
620 
622  virtual DtScriptedTaskManager* scriptedTaskManager() const;
623 
626  virtual DtAggregateSpatialModel* aggregateSpatialModel() const;
627 
630  virtual DtDetonationManager* detonationManager() const;
631 
634  virtual DtFireManager* fireManager() const;
635 
640  virtual DtScenarioExtrasMgr* scenarioExtrasMgr() const;
641 
643  virtual DtVrfParameterDb* parameterDatabase() const;
644 
646  virtual DtGlobalPlanManager* globalPlanManager();
647 
650 
651  virtual DtTerrainInterface* terrainInterface();
652  virtual const DtTerrainInterface* terrainInterface() const;
654 
657  virtual void setTerrainInterface(DtTerrainInterface* newTerrainDatabase);
658 
659 
662 
663  virtual DtPhysicalWorld* physicalWorld();
664  virtual const DtPhysicalWorld* physicalWorld() const;
666 
668  virtual void setPhysicalWorld(DtPhysicalWorld* newPhysicalWorld);
669 
671 
672  virtual DtCommModelManager* commModelManager();
673  virtual const DtCommModelManager* commModelManager() const;
675 
677  virtual DtScenario* scenario() const;
678 
681  virtual const DtSimulationAddress& simulationAddress() const;
682 
688  virtual int sessionId() const;
689 
692  virtual DtVrfStatusPublisher* statusPublisher() const;
693 
696  virtual DtExerciseConn* exerciseConn() const;
697 
699  virtual DtStealthRemoteController* stealthRemoteController() const;
700 
704  virtual void useMapDatum(const DtMapDatum& mapDatum);
705 
707  virtual void setParameterDbLoaded(bool flag);
708 
709  virtual void setMaxDrainInputTime(DtFloat64 maxTime);
710  virtual DtFloat64 maxDrainInputTime() const;
711 
712 #ifdef DtHLA
713  virtual void setMinDrainInputTime(DtFloat64 minTime);
714  virtual DtFloat64 minDrainInputTime() const;
715 #else
716  virtual void setMaxDrainInputReads(int maxReads);
717  virtual int maxDrainInputReads() const;
718 #endif
719 
720  virtual bool logFrameRateStatistics() const;
721  virtual void setLogFrameRateStatistics(bool yesOrNo);
722  virtual void setLogFrameRateOutputDirectory(const DtFilename&);
723  virtual const DtFilename& logFrameRateOutputDirectory() const;
724 
730  virtual void setDefaultParameterDbDirectory(const DtFilename& filename);
731 
732 #if DtHLA
733 
734 
735  virtual void setRunInTimeManagementMode(bool yesOrNo);
736  virtual bool runInTimeManagementMode() const;
737 
741  static void startTimeManagement(void* usr);
742  static void stopTimeManagement(void* usr);
743 
746  virtual void processStartTimeManagement();
747  virtual void processStopTimeManagement();
748 
749 #endif
750 
751  virtual void setFullyLoadTerrain(bool yesOrNo);
752  virtual bool fullyLoadTerrain() const;
753 
757 
758  virtual void setAssertOnBlockingTerrainCalls(bool b);
759  virtual bool assertOnBlockingTerrainCalls() const;
761 
762  //-------------------------------------------------------
764  //-------------------------------------------------------
765 
768  virtual void addPluginToLoad(const DtString&);
769 
772  virtual void setLoadPluginsIfVersionMismatch(bool);
773  virtual bool loadPluginsIfVersionMismatch() const;
774 
776 
777  DtVrfCreator* vrfCreator();
778  const DtVrfCreator* vrfCreator() const;
780 
784 
785  virtual void addPreLoadTerrainCallback(
787  virtual void removePreLoadTerrainCallback(
790 
794 
795  virtual void addPostLoadTerrainCallback(
797  virtual void removePostLoadTerrainCallback(
800 
804 
805  virtual void addPreLoadScenarioCallback(
807  virtual void removePreLoadScenarioCallback(
810 
814 
815  virtual void addPostLoadScenarioCallback(
817  virtual void removePostLoadScenarioCallback(
820 
823 
824  virtual void addPreSaveScenarioCallback(
826  virtual void removePreSaveScenarioCallback(
829 
832 
833  virtual void addPostSaveScenarioCallback(
835  virtual void removePostSaveScenarioCallback(
838 
841 
842  virtual void addPreCloseScenarioCallback(
844  virtual void removePreCloseScenarioCallback(
847 
850 
851  virtual void addPostCloseScenarioCallback(
853  virtual void removePostCloseScenarioCallback(
856 
859 
860  virtual void addScenarioPauseCallback(
862  virtual void removeScenarioPauseCallback(
865 
868 
869  virtual void addScenarioRunCallback(
871  virtual void removeScenarioRunCallback(
874 
877 
878  virtual void addPreScenarioRewindCallback(
880  virtual void removePreScenarioRewindCallback(
883 
886 
887  virtual void addPostScenarioRewindCallback(
889  virtual void removePostScenarioRewindCallback(
892 
895 
896  virtual void addPostTickCallback(
898  virtual void removePostTickCallback(
901 
903 
904  virtual void setTimeToQuit(bool);
905  virtual bool timeToQuit() const;
907 
911  virtual bool executeSimCommand(const DtSimCommand& simCommand);
912 
913 public:
914 
918  static void objectParametersOpCallback(DtSimMessage* msg, void* usr);
919 
920 protected:
922  static void scenarioDescriptionCallback(DtSimMessage*, void* usr);
923  virtual void processScenarioDescription(DtSimMessage*);
924 
926  static void actionCategoriesRequestCallback(DtSimMessage* msg, void* usr);
927  virtual void processActionCategoriesRequest(DtSimMessage* msg);
928 
929 private:
931  DtCgf(const DtCgf& original);
933  DtCgf& operator=(const DtCgf& original);
934 
935 protected:
937  virtual void loadAllPlugins();
938 
940  virtual bool loadComponentAttachmentTable(const DtFilename& filename);
946  virtual bool loadTerrain(const DtFilename& filename);
947 
951  virtual DtFilename findTerrainFile(const DtFilename& startFile, const std::vector<DtFilename>& searchPaths,
952  const std::string& extension) const;
953 
956  virtual void unloadTerrain();
957 
959  virtual bool loadOrderOfBattle(const DtFilename& filename);
960 
962  virtual bool loadScenarioScripts(const DtFilename& filename);
963 
966  virtual bool loadParameterDb(const DtFilename& filename);
967 
969  virtual bool loadObjectParametersDBFile(const DtFilename& opdFile);
970 
974  virtual bool loadPhysicalWorldFile(const DtFilename& file, bool force = false);
975 
977  virtual bool loadPlans(const DtFilename& filename);
978 
980  virtual bool loadGlobalPlans(const DtFilename& filename);
981 
983  virtual void loadHostilityAndExtras(const DtScenarioExplorer& se);
984 
987  virtual void loadModelSetFiles(const DtScenarioExplorer&);
988 
991  virtual void loadActionCategories(const DtFilename& f);
992 
993  virtual bool loadForceHostility(const DtFilename& filename);
994 
995  virtual bool loadScenarioExtras(const DtFilename& filename);
996 
999  virtual void processObjectParametersOp(DtSimMessage * msg);
1000 
1001 
1004  virtual void emptyParametersDB();
1005 
1016  virtual void setFrameRateMode(const DtString& mode, DtReal deltaTime);
1017 
1019  virtual void setAutoReorganization(bool onOff);
1020 
1023  virtual void drainInput();
1024 
1028  virtual DtVrfPlugin* loadPlugin(const DtString&);
1029 
1034 #if DtHLA
1035  DtHlaExerciseClock* exerciseClock() const;
1036 #else
1037  DtExerciseClock* exerciseClock() const;
1038 #endif
1039 
1042  virtual bool setupCommModelsForScenario(const DtScenarioExplorer& e);
1043 
1047  virtual void updateReadyStatus();
1048 
1050  virtual void processOrganizationManagerReady(const DtOrganizationManagerReadyCallbackInfo&);
1051  static void organizationManagerReadyCallback(const DtOrganizationManagerReadyCallbackInfo&, void* usr);
1052 
1055 
1056  static void simCommandCallback(DtSimMessage* msg, void* usr);
1057  virtual void processSimCommand(DtSimMessage* msg);
1059 
1063 
1064  static void deferredLoadScenarioCallback(void * data);
1065  virtual void processDeferredLoadScenario();
1067 
1071 
1072  static void deferredRewindCallback(void * data);
1073  virtual void processDeferredRewind();
1075 
1076  //-------------------------------------------------------
1078  //-------------------------------------------------------
1079 
1080  static DtOutputLogger& getGlobalFrameRateStatsLogger();
1081  static std::string createStatsLogFilename(
1082  const std::string& originalFilename, const DtSimManager& simManager,
1083  const DtScenario* scenario, const DtFilename& logFrameRateDir);
1084  static void logScenarioLoad(const DtSimManager& simManager,
1085  const DtScenario* scenario, const DtFilename& logFrameOutDir);
1086  static void logScenarioRewind();
1087  static void logScenarioClose();
1088  static void logFrameRateStatsToFile(DtSimManager* simManager);
1089 
1090 protected:
1091 
1093  DtSimulationAddress mySimulationAddress;
1094 
1097 
1099  bool myOK;
1100 
1103 
1106  std::vector<DtString> myPluginsToLoad;
1108 
1111 
1114 
1116 
1118  DtExerciseConn* myExerciseConn;
1119 
1122 
1125 
1128 
1131 
1133 
1137 
1139 
1142 
1145 
1148 
1151 
1153 
1156 
1158 
1160 
1163 
1166 
1172 
1177 
1180 
1183 
1186 
1189 
1192 
1195 
1199 
1202 
1207 
1221 
1223 #if DtHLA
1225 #else
1226  int myMaxDrainInputReads;
1227 #endif
1228 
1233  void setVrfCreator(DtVrfCreator* creator);
1235 
1237 
1238  bool ownVrfCreator() const;
1239  void setOwnVrfCreator(bool yesOrNo);
1241 
1242 protected:
1245 
1248 
1253 
1254 #if DtHLA
1256 #endif
1257 
1260 
1265 
1269 #if DtHLA
1271 #else
1272  DtExerciseClock* myExerciseClockPtr;
1273 #endif
1274 
1278 
1283 
1288 
1291 
1293 
1296  typedef std::pair<std::string, bool> ActionCategory;
1297  typedef std::map<std::string, ActionCategory> ActionCategories;
1299 };
1300 

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)