69 lines
1.4 KiB
C++
69 lines
1.4 KiB
C++
#ifndef _CTIMING_HPP_
|
|
#define _CTIMING_HPP_
|
|
|
|
/*** SDL Header Files ***/
|
|
#include <SDL.h>
|
|
|
|
/*** DLL Header File ***/
|
|
#include <dllExport.h>
|
|
|
|
#define MAXIMUM_FRAME_RATE 120
|
|
#define MINIMUM_FRAME_RATE 15
|
|
#define UPDATE_INTERVAL (1.0 / MAXIMUM_FRAME_RATE)
|
|
#define MAX_CYCLES_PER_FRAME (MAXIMUM_FRAME_RATE / MINIMUM_FRAME_RATE)
|
|
|
|
namespace TimingEngine {
|
|
/* Singleton */
|
|
class EXPORT_FROM_MYDLL cTiming
|
|
{
|
|
private:
|
|
cTiming( const unsigned long int ftp = 30 );
|
|
~cTiming();
|
|
|
|
public:
|
|
cTiming& operator=( const cTiming& copy );
|
|
|
|
/// Functions
|
|
static cTiming& Inst();
|
|
static void Delete();
|
|
|
|
const bool Initialize() const;
|
|
/* Sets up timing */
|
|
void Setup();
|
|
void CleanUp();
|
|
/* Sleeps if need */
|
|
void Time();
|
|
|
|
/// Sets
|
|
void setFTP( const unsigned long int ftp = 30 );
|
|
/// Gets
|
|
const unsigned long int getFTP() const;
|
|
/* Gets return true if Timer was initialized */
|
|
const bool IsInit() const;
|
|
|
|
const float getFrameTime() const;
|
|
|
|
|
|
private:
|
|
const unsigned long int TimeLeft();
|
|
void AddTimeandRate();
|
|
|
|
const float FrameTime();
|
|
|
|
private:
|
|
/// Variables
|
|
unsigned long int m_nextTime;/// = 0
|
|
|
|
unsigned long int m_rate;/// = (1000 / m_ftp)
|
|
|
|
unsigned long int m_ftp;/// = 30
|
|
|
|
static cTiming* sp_inst;/// = nullptr
|
|
|
|
unsigned long int m_start;/// = 0
|
|
float m_lastTime;/// = 0.0
|
|
float m_frameTime;/// = 0.0
|
|
};/// END CLASS DEFINITION cTiming
|
|
}/// END NAMESPACE DEFINITION TimingEngine
|
|
#endif/// END IFNDEF _CTIMING_HPP_
|