VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfSimOptions.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 /*******************************************************************************
7 ** Modify this class to add options that you can use to set up
8 ** initial simulation state. This object is used exclusively by the
9 ** DtVrfApp class.
10 *******************************************************************************/
11 
12 #pragma once
13 
16 
17 #include <vlutil/vlMachineTypes.h>
18 #include <vlutil/vlFilename.h>
19 #include <mtl/configVariable.h>
20 #include <mtl/multiConfigVariable.h>
21 #include <mtl/mtlEnvironment.h>
22 
24 
28 {
29 public:
30  // Default constructor
31  DtVrfSimOptions(int argc, char** argv, const char* appName, const char* appVersion);
32 
33  // Destructor
34  virtual ~DtVrfSimOptions();
35 
36  // This function will read a configuration file and set all
37  // of the appropriate values in the options object.
38  virtual bool readConfigurationFile(const DtFilename& mtlFile);
39 
40 public:
41  // Returns the frequency of vrfObject update messages for entities
42  virtual DtFloat64 entVrfDataTimeThreshold() const;
43 
44  // Returns the frequency of heartbeat messages
45  virtual int statusUpdateHeartbeat() const;
46 
47  // Returns the default simulation model set to use to load
48  // parameter database, communication model, physical world
49  // parameters
50  virtual DtFilename simulationModelSetFilename() const;
51 
52  // Forces DtCgf::loadScenario to reload the parameter database
53  virtual bool forceParameterDbReload() const;
54 
55  // The frame rate above which the back-end will sleep in order to yield CPU
56  // time to other processes. Once the frame rate drops below this level, the
57  // back-end will no longer sleep. This parameter only takes effect when the
58  // simulation is running in variable frame mode.
59  // @{
60  virtual void setTargetFrameRate(int rate);
61  virtual int targetFrameRate() const;
62  // @}
63 
64  // Returns the default rotation threshold
65  virtual double rotationThreshold() const;
66 
67  // Returns the default translation threshold
68  virtual double translationThreshold() const;
69 
70  // Returns the default aggregate dimension threshold
71  virtual double aggDimensionThreshold() const;
72 
73  // Default path to search for parameter database files, when no path is
74  // specified in a given scenario file.
75  virtual void setDefaultParameterDatabasePath(const DtFilename& path);
76  virtual const DtFilename& defaultParameterDatabasePath() const;
77 
78  // Default path to search for terrain database files, when no path is
79  // specified in a given scenario file.
80  virtual void setDefaultTerrainDatabasePath(const DtFilename& path);
81  virtual const DtFilename& defaultTerrainDatabasePath() const;
82 
83  // DI-Guy configuration files
84  // Returns whether to use DI-Characters inside Vr-Forces
85  virtual bool useDIGuy() const;
86 
87  // Character data file generated from DI0Guy
88  virtual DtFilename diGuyCharacterDataFile() const;
89 
90  // Animations configuration file used to augment character data file
91  virtual DtFilename diGuyAnimationsFile() const;
92 
93  // Whether or not the frame rate statistics of the backend should be logged,
94  // presumably (but not definitely) to file.
95  virtual bool logFrameRateStats() const;
96  virtual void setLogFrameRateStats(bool yesOrNo);
97 
99  virtual void setRejectMismatchedScenarioMessages(bool);
100  virtual bool rejectMismatchedScenarioMessages() const;
101 
102  virtual bool enableNavigationLabDebugging() const;
103  virtual void setEnableNavigationLabDebugging(bool enable);
104 
105  // Sets whether or not to publish zero velocity (and acceleration) when paused. Default
106  // is true
107  virtual void setPublishZeroVelocityWhenPaused(bool);
108  virtual bool publishZeroVelocityWhenPaused() const;
109 
110  // When the simulation is paused set the dead reckoning algorithm for aggregates and entities to static.
111  // This turned on in conjunction with publishZeroVelocityWhenPaused turn off will pause the objects
112  // in a VR-Forces run simulation and still show current values for velocity, speed, acceleration, etc.
114  virtual bool setDeadReckoningAlgorithmToStaticOnPause() const;
115 
116  // Aggregate spatial model tick characteristics. Times are given in seconds
117  // Indicates whether tick rates are to be specified using simulation time or
118  // real time. Default is false.
119  virtual bool aggregateSpatialModelTickPeriodUsesRealTime() const;
120  virtual void setAggregateSpatialModelTickPeriodUsesRealTime(bool yesOrNo);
121 
122  // Aggregate spatial model tick period in seconds. Default is 0.0 (tick as
123  // fast as possible).
124  virtual double aggregateSpatialModelTickPeriod() const;
125  virtual void setAggregateSpatialModelTickPeriod(double period);
126 
127  // Aggregate spatial model tick variance in seconds. Default is 0.0.
128  virtual double aggregateSpatialModelTickVariance() const;
129  virtual void setAggregateSpatialModelTickVariance(double variance);
130 
131  // Always tick as fast as possible while paused. Overrides above tick rate
132  // parameters for aggregate spatial model when simulation is paused. Default is true.
135 
136  virtual int sessionId() const;
137  virtual DtFilename batchFile() const;
138  virtual DtFilename scenarioFile() const;
139  virtual DtFilename terrainFile() const;
140 
142  virtual bool useAbsoluteTimeStamps() const;
143 
144  virtual int frontEndProcessId() const;
145 
146  virtual void setStartInRunMode(bool);
147  virtual bool startInRunMode() const;
148 
149 #ifdef WIN32
150  virtual void setDoNotUseConsole(bool);
151  virtual bool usingConsole() const;
152 
153  virtual void setStartMinimized(bool);
154  virtual bool startMinimized() const;
155 #endif
156 
157  virtual void setDaemonMode(bool);
158  virtual bool daemonMode() const;
159 
160 #if DtHLA
161  // HLA only - run back-end in HLA time management mode.
162  virtual bool runInTimeManagementMode() const;
163  virtual void setRunInTimeManagementMode(bool yesNo);
164 #endif
165 
166 #if DtDIS
167  virtual double heartbeatVariance() const;
168  virtual void setHeartbeatVariance(double variance);
169 
170  virtual std::vector<DtString> additionalDestinationAddresses() const;
171 
173  virtual void setAdditionalDestinationAddresses(const DtString& addresses);
174 
176  virtual void setAdditionalDestinationAddresses(const std::vector<DtString>& addresses);
177 #endif
178 
179  virtual void setReuseEntityIdentifiersOnScenarioLoad(bool);
180  virtual bool reuseEntityIdentifiersOnScenarioLoad() const;
181 
182  virtual void setTaskVisualizationPublicationMode(short state);
183  virtual short taskVisualizationPublicationMode() const;
184 
185  virtual void setUseDrawControlForTaskVisualizations(bool);
186  virtual bool useDrawControlForTaskVisualizations() const;
187 
188  // When parsing command line, is variables are set, copy them to "real" variables
189  virtual void parseCmdLine();
190 
191  virtual short simMgmtPduProcessLevel() const;
192 
193  virtual int cgfDispatcherReceivePort() const;
194  virtual void setCgfDispatcherReceivePort(int port);
195 
196  // Returns plugins to load
197  const std::vector<std::string>& pluginsToLoad() const;
198 
199  virtual void setLoadPluginIfVersionMismatch(bool);
200  virtual bool loadPluginIfVersionMismatch() const;
201 
202  virtual void setPluginsDirectory(const DtFilename&);
203  virtual const DtFilename& pluginsDirectory() const;
204 
206  virtual void setAdditionalSystemScriptsDirectory(const DtString&);
207 
209  virtual void setDoNotUsePluginsDirectory(bool b);
210  virtual bool doNotUsePluginsDirectory() const;
211 
213  virtual DtFilename outputFile() const;
214  virtual void setOutputFile(const DtFilename& s);
215 
216  // Sets the notify level for all streams managed by this console manager.
217  virtual void setNotifyLevel(DtNotifyLevelType level);
218  // \return The current notification level.
219  virtual DtNotifyLevelType notifyLevel() const;
220 
221  // If true, DtInfo, DtWarn, etc. log messages from the backend will
222  // be sent in comment interactions to the GUI. Default is true.
223  // \note This does not affect the object console logs, only the
224  // backend logs.
226  virtual void setSendBackendLogToNetwork(bool v);
227  virtual bool sendBackendLogToNetwork() const;
229 
230  // If true, terrain subpages will be fully loaded instead of on demand
232  virtual void setFullyLoadTerrain(bool v);
233  virtual bool fullyLoadTerrain() const;
235 
236  // If true, blocking terrain calls will cause an assert when a debug back-end
237  // is in run mode.
239  virtual void setAssertOnBlockingTerrainCalls(bool b);
240  virtual bool assertOnBlockingTerrainCalls() const;
242 
243  // The address of the network interface to be used for non HLA/DIS
244  // communications with the GUI.
245  // Defaults to a null string, indicating that VRF will automatically detect
246  // the network interface.
248  virtual void setHostAddress(const DtString& address);
249  virtual DtString hostAddress() const;
251 
252  // The address of the network interface to be used for non HLA/DIS
253  // communications, as reported to the GUI or remote controller.
254  // Defaults to a null string, indicating that VRF will report the hostAddress.
256  virtual void setReportedHostAddress(const DtString& address);
257  virtual DtString reportedHostAddress() const;
259 
262  virtual void setAppDataDir(const DtString&);
263  virtual DtString appDataDir() const;
265 
268  virtual void setDataDir(const DtString&);
269  virtual DtString dataDir() const;
271 
274  virtual void setUserDataDir(const DtString&);
275  virtual DtString userDataDir() const;
277 
278  // Mapping file for SIDC to Dis Enumerations
280  virtual void setMsdlSidcMappingFile(const DtString& address);
281  virtual DtFilename msdlSidcMappingFile() const;
283 
284  // Mapping file for Country Codes to Dis Enumerations
286  virtual void setCountryCodesMappingFile(const DtString& address);
287  virtual DtFilename countryCodesMappingFile() const;
289 
296  virtual void setNonVrfObjectsUUIDScheme(const DtString&);
297  virtual DtString nonVrfObjectsUUIDScheme() const;
299 
301  virtual void outputMtl();
302 #if USE_VLD_MEMORY_TRACKING && _DEBUG
303  virtual bool useVld() const;
304 #endif
305 
306  virtual void setMainThreadWaitForQueue(bool enable);
307  virtual void setNumCallbackThreads(unsigned n);
308  virtual void setDisableParallelTick(bool use);
309 
310  virtual bool mainThreadWaitForQueue() const;
311  virtual unsigned numCallbackThreads() const;
312  virtual bool disableParallelTick() const;
313 
314  virtual void setGamewareMemorySize(int sizeInMb);
315  virtual int gamewareMemorySize() const;
316 
317  virtual void setGamewareQueryTimeBudget(double ms);
318  virtual double gamewareQueryTimeBudget() const;
319 
320  virtual void setRegenerateNavigationDataAtRuntime(bool v);
321  virtual bool regenerateNavigationDataAtRuntime() const;
322 
323  virtual void setMaxNavigationRegenerationThreads(int threads);
324  virtual int maxNavigationRegenerationThreads() const;
325 
326  virtual void setNavigationRegenerationDelay(double delay);
327  virtual double navigationRegenerationDelay() const;
328 
329  virtual void setEnableLogFileTimestamps(bool v);
330  virtual bool enableLogFileTimestamps() const;
331 
332 #ifdef WIN32
333 
334  virtual void setMainThreadToHighPriority(bool);
335 #endif
336 
338  virtual std::vector<DtString> enabledChannels() const;
339 
343  virtual bool suppressDataAvailableException() const;
344  virtual void setSuppressDataAvailableException(bool);
346 
347 protected:
348  // This routine will tell the myMtlEnv object what variables to expect
349  // to read from the mtl file. Modify this routine to add your new
350  // variables. This routine is called from loadMtlFile().
351  virtual void initializeMtlParams();
352 
353  // This routine will set internal member variables from those
354  // read from the mtl file
355  virtual void setVariablesFromMtl();
356  virtual void processStringList(std::vector<DtString>& v, const std::vector<DtString>& list) const;
357 
358  // Initializes variables that can be used to check which plugins to load
359  virtual void initPluginVariables();
360 
361  // Process all .mtl files found in the supplied plugin directory to see which plugins to load
362  virtual void processPluginsDirectory(const DtFilename& directory);
363 
364 private:
365  // Copy constructor; not implemented
366  DtVrfSimOptions(const DtVrfSimOptions& orig);
367 
368  // Assignment operator; not implemented
370 
371 protected:
372  // The name of an alternate parameter database file to load upon startup.
373  DtConfigVariable<DtString> mySimulationModelSetFile;
374 
375  // Filename of batch file to load at startup.
376  DtConfigVariable<DtString> myBatchFile;
377 
378  // Cgf tick performance parameters
379  DtConfigVariable<int> myTargetFrameRate;
380 
381  // Integer session Id. Applications with a common session Id must share
382  // the same terrain database, and are capable of controlling one another
383  // through interface messages.
384  DtConfigVariable<int> mySessionId;
385 
386  // The name of a scenario (.scn) file to load upon startup (optional)
387  DtConfigVariable<DtString> myScenarioFile;
388 
389  // The name of a terrain file to load upon startup (optional - new scenario)
390  DtConfigVariable<DtString> myTerrainFile;
391 
392  // Set true to use DI-Guy Characters in Vr-Forces
393  short myUseDIGuy;
394 
395  // Configuration files for setting up DI-Guy characters
396  DtConfigVariable<DtString> myDIGuyCharacterDataFile;
397  DtConfigVariable<DtString> myDIGuyAnimationsFile;
398 
399  // MTL file to load. Note this is here only for --help purposes as this
400  // variable is parsed outside of the normal parsing routine
401  DtConfigVariable<DtString> mySettingsFile;
402 
403  // Where the app data directory is located
404  DtConfigVariable<DtString> myAppDataDir;
405 
406  // Where the data directory is located
407  DtConfigVariable<DtString> myDataDir;
408 
409  // Where the user data directory is located
410  DtConfigVariable<DtString> myUserDataDir;
411 
412  // Semi-colon separated list of directories to load system scripts from
413  DtConfigVariable<DtString> myAdditionalSystemScriptsDirectory;
414 
415  // Process ID of the front-end that started us (combined mode)
416  DtConfigVariable<int> myFrontEndPID;
417 #ifndef WIN32
418  // Whether to start in daemon mode or not. (UNIX only)
419  DtConfigVariable<bool> myCmdDaemonMode;
421 #endif
422 
423 #if DtHLA
424  // HLA only - flag indicating whether or not to run in HLA time
425  // management mode.
426  DtConfigVariable<bool> myCmdRunInTimeManagementMode;
428 #endif
429 
430 #ifdef DtDIS
432 
434 #endif
435 
437 
438  // Port number for incoming files in the DtCgfDispatcher
440 
442 
446 
447  // Default threshold values
451 
452  // Should the Cgf log performance (frame rate) stats or not
454 
456 
457  // Configure aggregate spatial model
462 
465 
466  // Start in run mode
468 
469 #ifdef WIN32
470  short myDoNotUseConsole;
471  short myStartMinimized;
472 #endif
473 
474  DtFilename myPluginsDirectory;
475 
476  // Parameters for command line only
477 #ifdef WIN32
478  DtConfigVariable<bool> myCmdNotUsingConsole;
479  DtConfigVariable<bool> myCmdStartMinimized;
480 #endif
481  DtConfigVariable<bool> myCmdStartInRunMode;
482  DtConfigVariable<bool> myCmdDoNotUsePluginsDirectory;
483  DtConfigVariable<bool> myCmdUseAbsoluteTimeStamps;
484 
485  DtConfigVariable<bool> myCmdLogFrameRateStatistics;
486 
487  DtMultiConfigVariable<std::string> myPluginFiles;
488 
489  DtMultiConfigVariable<DtString> myEnabledChannels;
490 
491  std::vector<std::string> myPluginsToLoad;
493  DtConfigVariable<DtString> myOutputFile;
494 
495  // Parameter for processing sim mgmt PDUs
497 
499 
500  // Starting object console notify level. Default is 2
503 
504  DtConfigVariable<bool> myCmdFullyLoadTerrain;
506 
510 
512 
513  // Address of the network interface to use for non-DIS/HLA communication with GUI.
514  DtConfigVariable<DtString> myHostAddress;
515 
516  DtConfigVariable<DtString> myMsdlSidcMappingFile;
517  DtConfigVariable<DtString> myCountryCodesMappingFile;
518  DtConfigVariable<DtString> myNonVrfObjectsUUIDScheme;
519 
520  DtConfigVariable<int> myCmdNumCallbackThreads;
521  DtConfigVariable<bool> myCmdMainThreadWaitForQueue;
522  DtConfigVariable<bool> myCmdDisableParallelTick;
523 
526 
527 #ifdef WIN32
528  DtConfigVariable<bool> myCmdSetMainThreadToHighPriority;
529  short mySetMainThreadToHighPriority;
530 #endif
531 #if USE_VLD_MEMORY_TRACKING && _DEBUG
532  DtConfigVariable<bool> myUseVld;
533 #endif
534 
537 
543 
545 
547 
548  DtConfigVariable<bool> myCmdSuppressDataAvailableException;
550 };
551 
552 inline const std::vector<std::string>& DtVrfSimOptions::pluginsToLoad() const
553 {
554  return myPluginsToLoad;
555 }
556 

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)