/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ----------------------------------------------------------------------------- */ #ifndef __NCLOCK__ #define __NCLOCK__ #include "memory/nshared_ptr.h" #include "container/smart_median_average.h" namespace GS { namespace Core { /*! @short Clock @author Emmanuel Julien (ejulien@nworks.fr) */ class Clock : public SharedObject { bool pause; int fixed_delta; ///< Fixed dt (ms). int _gtick, gtick; ///< System's global tick counter. int clock_scale; ///< System clock scale factor (x1000). int dt_clock; ///< Delta frame. int dt_error; SmartMedianAverage dt_clock_filter; public: void Reset(); void Update(); void Pause(bool = true); /// Sync to current hardware clock (skipping unaccounted dt_clock). void EatDeltaClock(); float Getf() const; float GetDeltaf() const; void SetScalef(float = 1.f); float GetScalef() const; /// Set fixed delta clock in seconds. void SetFixedDeltaFramef(float = -1.0); int GetDelta() const { return dt_clock; } void SetScale(int k = 1000) { clock_scale = k; } int GetScale() const { return clock_scale; } int Get() const { return gtick; } Clock(); }; typedef SharedPtr sClock; } // Core } // GS #endif // __NCLOCK__