提交scripts
This commit is contained in:
1 parent
82caf72036
commit
07dabbd186
224 files changed
+130146
No files matched your search
@@ -0,0 +1,165 @@
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Timer.cpp
|
||||
//
|
||||
// Copyright 2007 cDc@seacave
|
||||
// Distributed under the Boost Software License, Version 1.0
|
||||
// (See http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include "Common.h"
|
||||
#include "Timer.h"
|
||||
|
||||
using namespace SEACAVE;
|
||||
|
||||
|
||||
// D E F I N E S ///////////////////////////////////////////////////
|
||||
|
||||
|
||||
// S T R U C T S ///////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Timer::Timer(uint8_t nHH, uint8_t nMM)
|
||||
{
|
||||
m_fElapsedTime = 1.f;
|
||||
m_fTimeScale = 1.f;
|
||||
#ifdef FIX_FPS
|
||||
m_fCurrentFramesTime = 0.f;
|
||||
m_nCurrentFrames = 0;
|
||||
m_nLastSecFrames = 0;
|
||||
#endif // FIX_FPS
|
||||
|
||||
// set clock
|
||||
m_fClock = 0.f;
|
||||
if (nHH > 23)
|
||||
nHH = 0;
|
||||
if (nMM > 59)
|
||||
nMM = 0;
|
||||
m_nHH = nHH;
|
||||
m_nMM = nMM;
|
||||
m_nSS = 0;
|
||||
|
||||
m_nCrntTime = GetSysTime();
|
||||
} // constructor
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
|
||||
Timer::~Timer()
|
||||
{
|
||||
}
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
|
||||
/**
|
||||
* Counts the actual time and adjusts clock.
|
||||
*/
|
||||
void Timer::Update()
|
||||
{
|
||||
const SysType timeNow = GetSysTime();
|
||||
m_fElapsedTime = SysTime2Time(timeNow - m_nCrntTime);
|
||||
m_nCrntTime = timeNow;
|
||||
|
||||
#ifdef FIX_FPS
|
||||
// compute FPS
|
||||
++m_nCurrentFrames;
|
||||
if ((m_fCurrentFramesTime += m_fElapsedTime) >= 1.f) {
|
||||
m_nLastSecFrames = (uint32_t)((Type)m_nCurrentFrames/m_fCurrentFramesTime);
|
||||
m_fCurrentFramesTime = 0.f;
|
||||
m_nCurrentFrames = 0;
|
||||
}
|
||||
#endif // FIX_FPS
|
||||
|
||||
// adjust clock by seconds passed
|
||||
m_fClock += (m_fElapsedTime * m_fTimeScale);
|
||||
if (m_fClock >= 1.f) {
|
||||
m_nSS++;
|
||||
m_fClock = 0.f;
|
||||
}
|
||||
if (m_nSS >= 60) {
|
||||
m_nMM++;
|
||||
m_nSS = 0;
|
||||
}
|
||||
if (m_nMM >= 60) {
|
||||
m_nHH++;
|
||||
m_nMM = 0;
|
||||
}
|
||||
if (m_nHH >= 24)
|
||||
m_nHH = 0;
|
||||
} // Update
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
|
||||
/**
|
||||
* Sets the clock to any given starting time.
|
||||
*/
|
||||
void Timer::SetClock(uint8_t nHH, uint8_t nMM)
|
||||
{
|
||||
// set clock
|
||||
if (nHH > 23)
|
||||
nHH = 0;
|
||||
if (nMM > 59)
|
||||
nMM = 0;
|
||||
|
||||
m_nHH = nHH;
|
||||
m_nMM = nMM;
|
||||
} // SetClock
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
|
||||
/**
|
||||
* Gives you a time string with hours, minutes and seconds as return
|
||||
* and hours and/or minutes as reference parameters.
|
||||
*/
|
||||
LPTSTR Timer::GetClock(uint8_t* nHH, uint8_t* nMM, LPTSTR szChar) const
|
||||
{
|
||||
if (nHH != NULL)
|
||||
*nHH = m_nHH;
|
||||
if (nMM != NULL)
|
||||
*nMM = m_nMM;
|
||||
|
||||
if (szChar == NULL)
|
||||
return NULL;
|
||||
|
||||
_sntprintf(szChar, 32, "%.2d:%.2d:%.2d", m_nHH, m_nMM, m_nSS);
|
||||
return szChar;
|
||||
} // GetClock
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
|
||||
#ifdef TIMER_OLDSUPPORT
|
||||
// Check performance counter
|
||||
bool HasPerfCounter()
|
||||
{
|
||||
SysType nPerfCnt;
|
||||
return QueryPerformanceFrequency((LARGE_INTEGER*)&nPerfCnt) == TRUE;
|
||||
}
|
||||
const bool Timer::ms_bPerfFlag = HasPerfCounter();
|
||||
/*----------------------------------------------------------------*/
|
||||
#endif
|
||||
|
||||
|
||||
// Get system time factor used to convert to milliseconds
|
||||
Timer::Type GetSysTimeFactor()
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
Timer::SysType nPerfCnt;
|
||||
const BOOL bPerfFlag = QueryPerformanceFrequency((LARGE_INTEGER*)&nPerfCnt);
|
||||
#ifdef TIMER_OLDSUPPORT
|
||||
// either QueryPerformanceCounter or GetTickCount
|
||||
return (bPerfFlag ? 1000.f / nPerfCnt : 1.f);
|
||||
#else
|
||||
ASSERT(bPerfFlag);
|
||||
return 1000.f / nPerfCnt;
|
||||
#endif
|
||||
#else // _MSC_VER
|
||||
return 0.001f;
|
||||
#endif // _MSC_VER
|
||||
}
|
||||
const Timer::Type Timer::ms_fTimeFactor = GetSysTimeFactor();
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
Timer::Type Timer::GetTimeFactor()
|
||||
{
|
||||
return ms_fTimeFactor;
|
||||
}
|
||||
/*----------------------------------------------------------------*/
|
||||
Reference in new issue
Block a user