re3/src/core/Timer.h

76 lines
3.1 KiB
C
Raw Normal View History

2019-05-15 14:52:37 +00:00
#pragma once
#ifdef FIX_HIGH_FPS_BUGS_ON_FRONTEND
#define PauseModeTime double
#else
#define PauseModeTime uint32
#endif
2019-05-15 14:52:37 +00:00
class CTimer
{
2020-03-25 14:13:06 +00:00
2020-04-17 05:54:14 +00:00
static uint32 m_snTimeInMilliseconds;
static PauseModeTime m_snTimeInMillisecondsPauseMode;
2020-04-17 05:54:14 +00:00
static uint32 m_snTimeInMillisecondsNonClipped;
static uint32 m_snPreviousTimeInMilliseconds;
static uint32 m_FrameCounter;
static float ms_fTimeScale;
static float ms_fTimeStep;
static float ms_fTimeStepNonClipped;
2020-03-25 14:13:06 +00:00
public:
2020-04-17 05:54:14 +00:00
static bool m_UserPause;
static bool m_CodePause;
2020-03-11 03:25:50 +00:00
2020-03-25 14:13:06 +00:00
static const float &GetTimeStep(void) { return ms_fTimeStep; }
static void SetTimeStep(float ts) { ms_fTimeStep = ts; }
static float GetTimeStepInSeconds() { return ms_fTimeStep / 50.0f; }
2020-06-01 18:51:18 +00:00
static uint32 GetTimeStepInMilliseconds() { return ms_fTimeStep / 50.0f * 1000.0f; }
2020-03-25 14:13:06 +00:00
static const float &GetTimeStepNonClipped(void) { return ms_fTimeStepNonClipped; }
static float GetTimeStepNonClippedInSeconds(void) { return ms_fTimeStepNonClipped / 50.0f; }
2020-06-15 21:20:34 +00:00
static float GetTimeStepNonClippedInMilliseconds(void) { return ms_fTimeStepNonClipped / 50.0f * 1000.0f; }
static void SetTimeStepNonClipped(float ts) { ms_fTimeStepNonClipped = ts; }
2020-03-25 14:13:06 +00:00
static const uint32 &GetFrameCounter(void) { return m_FrameCounter; }
static void SetFrameCounter(uint32 fc) { m_FrameCounter = fc; }
2020-03-25 14:13:06 +00:00
static const uint32 &GetTimeInMilliseconds(void) { return m_snTimeInMilliseconds; }
static void SetTimeInMilliseconds(uint32 t) { m_snTimeInMilliseconds = t; }
2019-06-24 22:42:23 +00:00
static uint32 GetTimeInMillisecondsNonClipped(void) { return m_snTimeInMillisecondsNonClipped; }
static void SetTimeInMillisecondsNonClipped(uint32 t) { m_snTimeInMillisecondsNonClipped = t; }
static PauseModeTime GetTimeInMillisecondsPauseMode(void) { return m_snTimeInMillisecondsPauseMode; }
static void SetTimeInMillisecondsPauseMode(uint32 t) { m_snTimeInMillisecondsPauseMode = t; }
2019-06-24 22:42:23 +00:00
static uint32 GetPreviousTimeInMilliseconds(void) { return m_snPreviousTimeInMilliseconds; }
static void SetPreviousTimeInMilliseconds(uint32 t) { m_snPreviousTimeInMilliseconds = t; }
2020-03-25 14:13:06 +00:00
static const float &GetTimeScale(void) { return ms_fTimeScale; }
static void SetTimeScale(float ts) { ms_fTimeScale = ts; }
2020-03-31 10:30:13 +00:00
static uint32 GetCyclesPerFrame();
2019-06-25 12:25:39 +00:00
static bool GetIsPaused() { return m_UserPause || m_CodePause; }
static bool GetIsUserPaused() { return m_UserPause; }
2019-08-02 20:20:12 +00:00
static bool GetIsCodePaused() { return m_CodePause; }
static void SetCodePause(bool pause) { m_CodePause = pause; }
2019-05-29 18:02:58 +00:00
static void Initialise(void);
static void Shutdown(void);
static void Update(void);
static void Suspend(void);
static void Resume(void);
2019-06-16 22:16:38 +00:00
static uint32 GetCyclesPerMillisecond(void);
static uint32 GetCurrentTimeInCycles(void);
static bool GetIsSlowMotionActive(void);
2019-05-29 18:02:58 +00:00
static void Stop(void);
static void StartUserPause(void);
static void EndUserPause(void);
2020-04-13 18:20:57 +00:00
friend bool GenericLoad(void);
friend bool GenericSave(int file);
2020-06-27 21:01:51 +00:00
friend class CMemoryCard;
#ifdef FIX_BUGS
2020-05-22 12:34:44 +00:00
static float GetDefaultTimeStep(void) { return 50.0f / 30.0f; }
static float GetTimeStepFix(void) { return GetTimeStep() / GetDefaultTimeStep(); }
#endif
2019-05-15 14:52:37 +00:00
};
2020-04-10 15:06:49 +00:00
#ifdef FIX_HIGH_FPS_BUGS_ON_FRONTEND
2020-04-10 15:06:49 +00:00
extern double frameTime;
#endif