www.pudn.com > zfxcengine-0.1.0.zip > ceTimer.cpp
// $Id: ceTimer.cpp,v 1.8 2005/06/23 19:38:19 kimmi Exp $
////////////////////////////////////////////////////////////////////////////////
// Module: Core
//! \file ceTime.cpp
//! \brief Implemetierung des Timers
//! \author Sebastian Witziok
//
// Diese Datei steht unter der LGPL-Lizenz, welche
// im Hauptordner(ZFXC-Engine) unter LICENSE
// nachlesbar ist.
////////////////////////////////////////////////////////////////////////////////
#include "Core/ceCore.h"
#include "Core/ceTimer.h"
#include "Core/ceMemManager.h"
namespace ZFXCE {
///////////////////////////////////////////////////////////////////////////////////
ceTimer::ceTimer()
{
Init();
}
////////////////////////////////////////////////////////////////////////////////
ceTimer::~ceTimer()
{
Release();
}
////////////////////////////////////////////////////////////////////////////////
void ceTimer::Release()
{
if(m_pDayTime != 0)
delete m_pDayTime;
}
////////////////////////////////////////////////////////////////////////////////
void ceTimer::Init()
{
m_uiStartTime = SDL_GetTicks();
UpdateTimeOfDay();
m_pDayTime = 0;
m_fFrameTime = GetTime() * 0.001;
}
////////////////////////////////////////////////////////////////////////////////
UINT ceTimer::GetTime()
{
m_uiCurrentTime = SDL_GetTicks()/* - m_uiStartTime*/;
return m_uiCurrentTime;
}
////////////////////////////////////////////////////////////////////////////////
void ceTimer::GetFPS(UINT* pFPS)
{
// Speichert die Zeit, die seit dem letzten Frame vergangen ist
static DOUBLE fLastTime = 0.0;
// Die Zeit, die das letzte Frame gebraucht hat
static DOUBLE fFrameTime = 0.0;
// Die aktuelle Zeit als Float
DOUBLE fCurrentTime = (this->GetTime() * 0.001);
m_fFrameInterval = fCurrentTime - fFrameTime;
fFrameTime = fCurrentTime;
// Frame Zähler erhöhen
++m_uiFPS;
// Jede Sekunde die FPS Zahl aktualisieren
if( (fCurrentTime - fLastTime) > 1.0f) {
fLastTime = fCurrentTime;
if(pFPS)
*pFPS = m_uiFPS;
// FPS Zähler zurücksetzen
m_uiFPS = 0;
}
}
////////////////////////////////////////////////////////////////////////////////
DOUBLE ceTimer::GetFrameInterval()
{
const DOUBLE fCurrentTime = (GetTime() * 0.001);
m_fFrameInterval = m_fFrameTime - fCurrentTime;
m_fFrameTime = fCurrentTime;
return m_fFrameInterval;
}
////////////////////////////////////////////////////////////////////////////////
void ceTimer::UpdateTimeOfDay()
{
// Get time as long int by standard tools
time(&m_lTime);
// Convert into local time
m_pDayTime = localtime( &m_lTime);
}
////////////////////////////////////////////////////////////////////////////////
} // Namespace ZFXCE