VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
frameRateMonitor.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 
15 
16 #include "vrfcore/vrfcoreDefines.h"
17 #include <vlutil/vlString.h>
18 #include <vl/hostStructs.h>
19 #include <vector>
20 
21 class DtPeriodicTimer;
22 class DtSimManager;
24 class DtSimMessage;
25 class DtTimer;
26 
28 
30 {
31 private:
33 
36 
38  const DtFrameRateMonitor& operator=(const DtFrameRateMonitor& orig);
39 
40 public:
41  typedef std::vector<DtSimulationAddress> DtFrameRateRequesters;
42  typedef DtFrameRateRequesters::iterator DtFrameRateRequestersIter;
43  typedef DtFrameRateRequesters::const_iterator DtFrameRateRequestersConstIter;
44 
46  DtFrameRateMonitor(DtSimManager* simManager);
47 
49  virtual bool init();
50 
52  virtual bool registerInterfaceCallbacks();
53 
54  virtual double meanFrameRate(int section = -1);
55 
56  virtual double medianFrameRate(int section = -1);
57 
58  virtual double standardDeviationFrameRate(int section = -1);
59 
60  virtual double minimumFrameRate(int section = -1);
61 
62  virtual double maximumFrameRate(int section = -1);
63 
64  virtual double simTimeToRealTimeRatio();
65 
67  virtual int numSections() const;
68 
70  virtual int section(int index) const;
71 
73  virtual std::vector<int> sections() const;
74 
78  virtual double lastSample(int section = -1);
79 
82  virtual void reset(bool sendReport = false);
83 
84  virtual void setReportMean(bool reportMean);
85  virtual bool reportMean() const;
86 
87  virtual void setReportMedian(bool reportMedian);
88  virtual bool reportMedian() const;
89 
90  virtual void setReportStandardDeviation(bool reportStandardDeviation);
91  virtual bool reportStandardDeviation() const;
92 
93  virtual void setReportMinimum(bool reportMinimum);
94  virtual bool reportMinimum() const;
95 
96  virtual void setReportMaximum(bool reportMaximum);
97  virtual bool reportMaximum() const;
98 
99  virtual void setReportToConsole(bool reportToConsole);
100  virtual bool reportToConsole() const;
101 
102  virtual void setReportSimTimeToRealTimeRatio(bool reportSimTimeToRealTimeRatio);
103  virtual bool reportSimTimeToRealTimeRatio() const;
104 
105  virtual void setTickingPublishersDuringObjectTick(bool);
106  virtual bool tickingPublishersDuringObjectTick() const;
107 
109  virtual bool hasRequestors() const;
110 
111  virtual void setTimeMultiplier(double d);
112 
114  virtual void processFrameRateRequestMessage(DtSimInterfaceMessage* message);
115  virtual void processPingRequest(DtSimInterfaceMessage* message);
116  virtual void processModifyPerformanceSettings(DtSimInterfaceMessage*);
117 
119  virtual void generateReport();
120 
122  virtual void updateImgui();
123  static void updateImguiCallback(void* usr);
124 
126  virtual ~DtFrameRateMonitor();
127 
128  static void pingRequestCallback(DtSimMessage* msg, void* usr);
129  static void frameRateRequestCallback(DtSimMessage* msg, void* usr);
130  static void modifyPerformanceSettingsCallback(DtSimMessage* msg, void* usr);
131  static void reportTimerCallback(DtTimer* timer);
132 
133 protected:
134  virtual void removeTimer();
135  virtual void setTimer(double period);
136 
137 protected:
138 
147 
154 
157 
161 
164 };
DtTime myLastReportTimerCbSimTime
Definition: frameRateMonitor.h:151
DtFrameRateRequesters::iterator DtFrameRateRequestersIter
Definition: frameRateMonitor.h:42
DtTime mySimTimeRealTimeRatio
Definition: frameRateMonitor.h:153
Instances of DtTimer are used to maintain the information needed to represent some kind of scheduled ...
Definition: timer.h:38
double myTimeMultiplier
Definition: frameRateMonitor.h:159
DtFrameRateRequesters myRequesters
Contains simulation addresses of everyone who has requested reports.
Definition: frameRateMonitor.h:156
bool myReportMeanFlag
The values of these will determine what gets put into a report.
Definition: frameRateMonitor.h:140
DtPeriodicTimer * myReportTimer
Definition: frameRateMonitor.h:149
DtSimInterfaceMessage is used to send a message to the front end or the back end. It derives from a s...
Definition: simInterfaceMessage.h:23
DtSimManager * mySimManager
Definition: frameRateMonitor.h:148
bool myReportSimTimeToRealTimeRatioFlag
Definition: frameRateMonitor.h:146
bool myReportStandardDeviationFlag
Definition: frameRateMonitor.h:142
bool myReportMaximumFlag
Definition: frameRateMonitor.h:144
bool myReportMinimumFlag
Definition: frameRateMonitor.h:143
DtFrameRateRequesters::const_iterator DtFrameRateRequestersConstIter
Definition: frameRateMonitor.h:43
bool myReportToConsoleFlag
Definition: frameRateMonitor.h:145
File: simMsg.h.
Definition: simMessage.h:35
std::vector< DtSimulationAddress > DtFrameRateRequesters
Definition: frameRateMonitor.h:41
bool myReportMedianFlag
Definition: frameRateMonitor.h:141
short myNumberOfCPUs
Definition: frameRateMonitor.h:158
Note that this class is not thread safe. Only call from the main thread.
Definition: frameRateMonitor.h:29
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myIsPaused
When paused, the frame rate logger will ignore any specified samples.
Definition: frameRateMonitor.h:163
DtTime myLastReportTimerCbRealTime
Definition: frameRateMonitor.h:152
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:137
double myCurrentResponsePeriod
Definition: frameRateMonitor.h:150
bool myTickingPublishersDuringObjectTick
Definition: frameRateMonitor.h:160
Definition: periodicTimer.h:23
#define DT_DLL_vrfcore
This file is used to determine how to build.
Definition: vrfcoreDefines.h:25

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)