Pioneer
PerfInfo.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #pragma once
5 
6 #include "PerfStats.h"
7 #include "RefCounted.h"
8 #include <array>
9 #include <memory>
10 
11 namespace PiGui {
12 
13  class PerfInfo {
14  public:
17 
18  // Information about the current process memory usage in KB.
19  struct MemoryInfo {
21  size_t peakMemSize;
22  };
23  struct ImGuiState;
24 
25  void Draw();
26 
27  // Update with current frame and physics update time in ms
28  void Update(float frameTime, float physTime);
29  void UpdateFrameInfo(int framesThisSecond, int physFramesThisSecond);
30 
31  void SetShowDebugInfo(bool open);
32  void SetUpdatePause(bool pause);
33 
34  private:
35  void DrawPerfWindow();
36  void DrawTextureCache();
37  void DrawTextureInspector();
38 
39  void DrawRendererStats();
40  void DrawWorldViewStats();
41  void DrawImGuiStats();
42  void DrawInputDebug();
43  void DrawStatList(const Perf::Stats::FrameInfo &fi);
44 
45  static const int NUM_FRAMES = 60;
46  std::array<float, NUM_FRAMES> m_fpsGraph;
47  std::array<float, NUM_FRAMES> m_physFpsGraph;
48  float frameTimeAverage = 0;
49  float frameTimeMax = 0;
50  float frameTimeMin = 0;
51  float physFrameTimeAverage = 0;
52  float physFrameTimeMax = 0;
53  float physFrameTimeMin = 0;
54 
55  MemoryInfo process_mem;
56  size_t lua_mem = 0;
57  float framesThisSecond = 0;
58  float physFramesThisSecond = 0;
59 
60  float lastUpdateTime = 0;
61 
62  ImGuiState *m_state;
63  };
64 
65 } // namespace PiGui
std::map< std::string, uint32_t > FrameInfo
Definition: PerfStats.h:26
Definition: PerfInfo.h:13
void Update(float frameTime, float physTime)
void SetShowDebugInfo(bool open)
void UpdateFrameInfo(int framesThisSecond, int physFramesThisSecond)
void SetUpdatePause(bool pause)
Definition: LuaBody.cpp:28
Definition: PerfInfo.h:19
size_t currentMemSize
Definition: PerfInfo.h:20
size_t peakMemSize
Definition: PerfInfo.h:21