VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scenarioPerformanceTestManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
8 #include "vrfcgf/vrfcgfDefines.h"
12 
13 #include <chrono>
14 #include <atomic>
15 
16 #include <rapidjson/fwd.h>
17 
18 class DtCgf;
19 class DtScenario;
20 
22 {
23 public:
26  {
27  DtCoordInside = 0,
28  DtCoordNotInside = 1,
29  DtCoordIntersects = 2
30  };
31 
34  {
36  double meanFramerate;
40  double sampleTime;
41  };
42 
43  struct DtEntityInfo
44  {
45  std::string EntityType;
47 
48  bool operator==(const DtEntityInfo& rhs) const { return ( EntityType == rhs.EntityType && numEntities == rhs.numEntities ); };
49  };
50 
52  DtScenarioPerformanceTestManager(DtCgf* cgf, const DtString&, const DtString outputFilename = "");
53 
56 
59 
62 
64  static void postScenarioLoadCallback(const DtScenario& s, void* usr);
65  virtual void postScenarioLoadCallback(const DtScenario& s);
66  static void postTickCallback(void* usr);
67  virtual void tick();
68 
70  bool loadScenario();
71 
73  void setMaxTasks();
74 
76  bool jsonPrettyPrint() { return myRapidjsonPrettyPrint; };
77  void setJsonPrettyPrint(bool pp) { myRapidjsonPrettyPrint = pp; };
78 
80  int jsonDecimals() { return myRapidjsonDecimals; };
81  void setJsonDecimals(int d) { myRapidjsonDecimals = d; };
82 
84  int jsonIndentSize() { return myRapidjsonIndentSize; };
85  void setJsonIndentSize(int s) { myRapidjsonIndentSize = s; };
86 
87 protected:
89  void loadConfig(const DtString&);
90 
92  void finishMonitoring();
93 
95  int checkTestName(const rapidjson::Value&) const;
96  bool checkEntityInfo(const rapidjson::Value&, const std::vector<DtEntityInfo>) const;
97  bool checkScenarioFile(const rapidjson::Value&) const;
98  bool checkProtocol(const rapidjson::Value&) const;
99  bool checkCallbackThreads(const rapidjson::Value&) const;
100 
102  void createJsonFile();
103 
105  std::string getCurrentProtocol() const;
106 
108  std::string getCPUName() const;
109  double getMemoryInstalled() const;
111 
113  void createEntities(const DtRwEntityCreationConfig& config, std::vector<DtVrfObject*>& ents);
114 
116  DtExtent generateExtentsOfArea(const DtVrfObject* area);
117  DtRandomCoordGenerationStatus generateRandomPointInArea(const DtVrfObject* area, const double entityRadius, DtExtent& areaExtent, DtVector& coord);
118 
121  std::vector<DtPerformanceStatistics> myStats;
126 
131  std::string myOutputJson;
132 
135 };
136 
void setJsonPrettyPrint(bool pp)
Definition: scenarioPerformanceTestManager.h:77
Definition: rwScenarioPerformanceTestConfig.h:78
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
int myRapidjsonDecimals
Definition: scenarioPerformanceTestManager.h:129
std::string myOutputJson
Definition: scenarioPerformanceTestManager.h:131
Definition: scenario.h:52
DtRwScenarioPerformanceTestConfig myConfig
Definition: scenarioPerformanceTestManager.h:134
int jsonDecimals()
Set and Get the decimals.
Definition: scenarioPerformanceTestManager.h:80
std::string EntityType
Definition: scenarioPerformanceTestManager.h:45
DtCgf * myCgf
Definition: scenarioPerformanceTestManager.h:133
void setJsonDecimals(int d)
Definition: scenarioPerformanceTestManager.h:81
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
bool myDelayedStartSamplingTime
Definition: scenarioPerformanceTestManager.h:123
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
void setJsonIndentSize(int s)
Definition: scenarioPerformanceTestManager.h:85
int mySampleCount
Definition: scenarioPerformanceTestManager.h:125
double maximumFramerate
Definition: scenarioPerformanceTestManager.h:39
bool jsonPrettyPrint()
Set and Get whether to have RapidJson pretty print.
Definition: scenarioPerformanceTestManager.h:76
int numEntities
Definition: scenarioPerformanceTestManager.h:46
double myEntityCreationTime
Sample information.
Definition: scenarioPerformanceTestManager.h:120
double meanFramerate
Definition: scenarioPerformanceTestManager.h:36
IMGUI_API void Value(const char *prefix, bool b)
double minimumFramerate
Definition: scenarioPerformanceTestManager.h:38
int jsonIndentSize()
Set and Get the indentation size.
Definition: scenarioPerformanceTestManager.h:84
Definition: rwScenarioPerformanceTestConfig.h:26
DtRandomCoordGenerationStatus
Enum for returning status of random coordinate generation.
Definition: scenarioPerformanceTestManager.h:25
Definition: scenarioPerformanceTestManager.h:43
Struct for storing framerate information.
Definition: scenarioPerformanceTestManager.h:33
int myRapidjsonIndentSize
Definition: scenarioPerformanceTestManager.h:130
bool myRapidjsonPrettyPrint
RapidJson.
Definition: scenarioPerformanceTestManager.h:128
double sampleTime
Definition: scenarioPerformanceTestManager.h:40
Definition: scenarioPerformanceTestManager.h:21
double myLastCheckedTime
Definition: scenarioPerformanceTestManager.h:124
An instance of DtCgf is an object representing a CGF (Computer Generated Forces). ...
Definition: cgf.h:115
double myFinishedPostScenarioLoadTime
Definition: scenarioPerformanceTestManager.h:122
#define DT_DLL_vrfcgf
This file is used to determine how to build.
Definition: vrfcgfDefines.h:25
double standardDeviationFramerate
Definition: scenarioPerformanceTestManager.h:37
bool operator==(const DtEntityInfo &rhs) const
Definition: scenarioPerformanceTestManager.h:48
int sampleNumber
Definition: scenarioPerformanceTestManager.h:35
std::vector< DtPerformanceStatistics > myStats
Definition: scenarioPerformanceTestManager.h:121

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)