提交scripts
This commit is contained in:
1 parent
82caf72036
commit
07dabbd186
224 files changed
+130146
No files matched your search
@@ -0,0 +1,141 @@
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Timer.h
|
||||
//
|
||||
// Copyright 2007 cDc@seacave
|
||||
// Distributed under the Boost Software License, Version 1.0
|
||||
// (See http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef __SEACAVE_TIMER_H__
|
||||
#define __SEACAVE_TIMER_H__
|
||||
|
||||
|
||||
// I N C L U D E S /////////////////////////////////////////////////
|
||||
|
||||
|
||||
// D E F I N E S ///////////////////////////////////////////////////
|
||||
|
||||
#ifdef _MSC_VER
|
||||
//#define TIMER_OLDSUPPORT
|
||||
#endif
|
||||
#define FIX_FPS
|
||||
|
||||
|
||||
namespace SEACAVE {
|
||||
|
||||
// S T R U C T S ///////////////////////////////////////////////////
|
||||
|
||||
class GENERAL_API Timer
|
||||
{
|
||||
public:
|
||||
typedef int64_t SysType;
|
||||
typedef float Type;
|
||||
|
||||
public:
|
||||
Timer(uint8_t nHH=0, uint8_t nMM=0);
|
||||
~Timer();
|
||||
|
||||
void Update();
|
||||
|
||||
void SetClock(uint8_t nHH, uint8_t nMM);
|
||||
LPTSTR GetClock(uint8_t* nHH, uint8_t* nMM, LPTSTR szChar) const;
|
||||
|
||||
#ifdef FIX_FPS
|
||||
inline uint32_t GetFPS() const { return m_nLastSecFrames; }
|
||||
#else
|
||||
inline uint32_t GetFPS() const { return (uint32_t)(1.f / m_fElapsedTime); }
|
||||
#endif // FIX_FPS
|
||||
|
||||
inline Type GetRealCurrent() const { return SysTime2Time(m_nCrntTime); }
|
||||
inline Type GetCurrent() const { return m_fTimeScale * SysTime2Time(m_nCrntTime); }
|
||||
inline Type GetRealElapsed() const { return m_fElapsedTime; }
|
||||
inline Type GetElapsed() const { return m_fTimeScale * m_fElapsedTime; }
|
||||
inline Type GetDelay(Type d) const { return m_fTimeScale * d; }
|
||||
inline Type GetScale() const { return m_fTimeScale; }
|
||||
inline void SetScale(Type fFactor) { m_fTimeScale = fFactor; }
|
||||
|
||||
private:
|
||||
SysType m_nCrntTime; // current time
|
||||
Type m_fElapsedTime; // time elapsed since previous frame
|
||||
Type m_fTimeScale; // slowdown or speedup
|
||||
uint8_t m_nHH; // clock time hours
|
||||
uint8_t m_nMM; // clock time minutes
|
||||
uint8_t m_nSS; // clock time seconds
|
||||
Type m_fClock; // sum up milliseconds
|
||||
#ifdef FIX_FPS
|
||||
Type m_fCurrentFramesTime; // time elapsed for the current frames
|
||||
uint32_t m_nCurrentFrames; // counter of the current frames
|
||||
uint32_t m_nLastSecFrames; // counter of the frames in the last second
|
||||
#endif // FIX_FPS
|
||||
|
||||
public:
|
||||
// get current time in system units
|
||||
static inline SysType GetSysTime() {
|
||||
#ifdef _MSC_VER
|
||||
#ifdef TIMER_OLDSUPPORT
|
||||
if (!ms_bPerfFlag)
|
||||
return GetTickCount();
|
||||
#endif
|
||||
SysType nTime;
|
||||
QueryPerformanceCounter((LARGE_INTEGER*)&nTime);
|
||||
return nTime;
|
||||
#else
|
||||
timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
return (tv.tv_sec * 1000000) + tv.tv_usec;
|
||||
#endif // _MSC_VER
|
||||
}
|
||||
// get milliseconds scaling factor for time
|
||||
static Type GetTimeFactor();
|
||||
// get current time in milliseconds
|
||||
static inline Type GetTimeMs() {
|
||||
return GetTimeFactor() * GetSysTime();
|
||||
}
|
||||
// get current time in seconds
|
||||
static inline Type GetTime() {
|
||||
return 0.001f * GetTimeFactor() * GetSysTime();
|
||||
}
|
||||
// convert given time to milliseconds
|
||||
static inline Type SysTime2TimeMs(SysType t) {
|
||||
return GetTimeFactor() * t;
|
||||
}
|
||||
// convert given time to seconds
|
||||
static inline Type SysTime2Time(SysType t) {
|
||||
return 0.001f * GetTimeFactor() * t;
|
||||
}
|
||||
|
||||
protected:
|
||||
#ifdef TIMER_OLDSUPPORT
|
||||
static const bool ms_bPerfFlag; // flag for timer to use
|
||||
#endif
|
||||
static const Type ms_fTimeFactor; // milliseconds scaling factor for time
|
||||
};
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
|
||||
class GENERAL_API AutoTimer
|
||||
{
|
||||
public:
|
||||
typedef Timer::Type Type;
|
||||
public:
|
||||
AutoTimer(Type& duration) : m_duration(duration) { m_duration = Timer::GetTime(); }
|
||||
~AutoTimer() { m_duration = Timer::GetTime() - m_duration; }
|
||||
protected:
|
||||
Type& m_duration;
|
||||
};
|
||||
|
||||
class GENERAL_API AutoAddTimer
|
||||
{
|
||||
public:
|
||||
typedef Timer::Type Type;
|
||||
public:
|
||||
AutoAddTimer(Type& duration) : m_duration(duration) { m_lastTime = Timer::GetTime(); }
|
||||
~AutoAddTimer() { m_duration += Timer::GetTime() - m_lastTime; }
|
||||
protected:
|
||||
Type& m_duration;
|
||||
Type m_lastTime;
|
||||
};
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
} // namespace SEACAVE
|
||||
|
||||
#endif // __SEACAVE_TIMER_H__
|
||||
Reference in new issue
Block a user