summaryrefslogtreecommitdiffstats
path: root/src/app/app.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/app.h')
-rw-r--r--src/app/app.h52
1 files changed, 49 insertions, 3 deletions
diff --git a/src/app/app.h b/src/app/app.h
index 2da20d3..4aa97ce 100644
--- a/src/app/app.h
+++ b/src/app/app.h
@@ -41,6 +41,10 @@ class CEventQueue;
class CRobotMain;
class CSoundInterface;
+namespace Gfx {
+class CModelManager;
+}
+
/**
* \struct JoystickDevice
* \brief Information about a joystick device
@@ -112,6 +116,31 @@ enum MouseMode
MOUSE_NONE, //! < no cursor visible
};
+/**
+ * \enum PerformanceCounter
+ * \brief Type of counter testing performance
+ */
+enum PerformanceCounter
+{
+ PCNT_EVENT_PROCESSING, //! < event processing (except update events)
+
+ PCNT_UPDATE_ALL, //! < the whole frame update process
+ PCNT_UPDATE_ENGINE, //! < frame update in CEngine
+ PCNT_UPDATE_PARTICLE, //! < frame update in CParticle
+ PCNT_UPDATE_GAME, //! < frame update in CRobotMain
+
+ PCNT_RENDER_ALL, //! < the whole rendering process
+ PCNT_RENDER_PARTICLE, //! < rendering the particles in 3D
+ PCNT_RENDER_WATER, //! < rendering the water
+ PCNT_RENDER_TERRAIN, //! < rendering the terrain
+ PCNT_RENDER_OBJECTS, //! < rendering the 3D objects
+ PCNT_RENDER_INTERFACE, //! < rendering 2D interface
+
+ PCNT_ALL, //! < all counters together
+
+ PCNT_MAX
+};
+
struct ApplicationPrivate;
/**
@@ -198,9 +227,6 @@ public:
//! Returns whether simulation is suspended
bool GetSimulationSuspended();
- //! Updates the simulation state
- void StepSimulation();
-
//@{
//! Management of simulation speed
void SetSimulationSpeed(float speed);
@@ -304,6 +330,13 @@ public:
bool GetLowCPU();
//@}
+ //! Management of performance counters
+ //@{
+ void StartPerformanceCounter(PerformanceCounter counter);
+ void StopPerformanceCounter(PerformanceCounter counter);
+ float GetPerformanceCounterData(PerformanceCounter counter);
+ //@}
+
protected:
//! Creates the window's SDL_Surface
bool CreateVideoSurface();
@@ -312,6 +345,8 @@ protected:
Event ProcessSystemEvent();
//! If applicable, creates a virtual event to match the changed state as of new event
Event CreateVirtualEvent(const Event& sourceEvent);
+ //! Prepares a simulation update event
+ Event CreateUpdateEvent();
//! Handles some incoming events
bool ProcessEvent(const Event& event);
//! Renders the image in window
@@ -322,6 +357,11 @@ protected:
//! Closes the joystick device
void CloseJoystick();
+ //! Resets all performance counters to zero
+ void ResetPerformanceCounters();
+ //! Updates performance counters from gathered timer data
+ void UpdatePerformanceCountersData();
+
protected:
//! Instance manager
CInstanceManager* m_iMan;
@@ -333,10 +373,13 @@ protected:
Gfx::CEngine* m_engine;
//! Graphics device
Gfx::CDevice* m_device;
+ //! 3D models manager
+ Gfx::CModelManager* m_modelManager;
//! Sound subsystem
CSoundInterface* m_sound;
//! Main class of the proper game engine
CRobotMain* m_robotMain;
+ //! Profile (INI) reader/writer
CProfile* m_profile;
//! Code to return at exit
@@ -363,6 +406,9 @@ protected:
SystemTimeStamp* m_lastTimeStamp;
SystemTimeStamp* m_curTimeStamp;
+ SystemTimeStamp* m_performanceCounters[PCNT_MAX][2];
+ float m_performanceCountersData[PCNT_MAX];
+
long long m_realAbsTimeBase;
long long m_realAbsTime;
long long m_realRelTime;