You.i Engine
YiTime.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_TIME_H_
3 #define _YI_TIME_H_
4 
5 #include "framework/YiPredef.h"
7 #include <chrono>
8 
9 
24 class CYITime
25 {
26 public:
27  static const uint32_t UPDATE_STATUS_NONE = 0x00000000;
28  static const uint32_t UPDATE_STATUS_DISABLE_INPUT = 0x00000001;
29  static const uint32_t UPDATE_STATUS_SCENE_DIRTY = 0x00000002;
30 
32  {
33  friend class CYITime;
34  public:
36  virtual ~UpdateListener();
37 
43  virtual bool OnFrameTimeUpdated(std::chrono::microseconds nFrameTime) = 0;
44 
49  virtual bool GetDisablesInput();
50 
51  private:
52  bool m_bIsRegistered;
53  std::list<CYITime::UpdateListener*>::iterator m_LocationKey;
54  };
55 
56  CYITime();
57  virtual ~CYITime();
58 
62  void UpdateTime();
63 
72  void UpdateTime(uint64_t uDeltaTime);
73 
81  void SetTimeDilationFactor(float fFactor);
82 
87 
92 
99  bool HasListeners() const;
100 
104  std::chrono::microseconds GetFrameTime();
105 
110  uint64_t GetRefTime();
111 
115  uint32_t GetLastUpdateStatus();
116 
117 protected:
118  void NotifyTimeUpdated(std::chrono::microseconds nFrameTime);
119 
120 private:
121  std::chrono::microseconds m_nFrameTime;
122  std::chrono::microseconds m_nRefTime; // When frame count was last reset (in microSecond)
123  float m_fDilationFactor; // when larger than 1.0, causes time to appear to pass slower; when smaller than 1.0, causes time to appear to pass faster
124 
125  std::list<CYITime::UpdateListener *> m_timeUpdateListenerList;
126  std::list<CYITime::UpdateListener *> m_timeUpdateListenerRemoveList;
127 
128  bool m_bTimeUpdateInProgress;
129  uint32_t m_uLastUpdateStatusFlags;
130 };
131 
134 #endif // _YI_TIME_H_
void SetTimeDilationFactor(float fFactor)
bool HasListeners() const
virtual bool OnFrameTimeUpdated(std::chrono::microseconds nFrameTime)=0
void NotifyTimeUpdated(std::chrono::microseconds nFrameTime)
uint32_t GetLastUpdateStatus()
friend class CYITime
Definition: YiTime.h:33
uint64_t GetRefTime()
Definition: YiTime.h:31
void UnregisterTimeUpdateListener(CYITime::UpdateListener *pListener)
static const uint32_t UPDATE_STATUS_NONE
Definition: YiTime.h:27
static const uint32_t UPDATE_STATUS_DISABLE_INPUT
Definition: YiTime.h:28
global class used to notify the system of time updates
Definition: YiTime.h:24
virtual bool GetDisablesInput()
virtual ~CYITime()
static const uint32_t UPDATE_STATUS_SCENE_DIRTY
Definition: YiTime.h:29
void RegisterTimeUpdateListener(CYITime::UpdateListener *pListener)
void UpdateTime()
std::chrono::microseconds GetFrameTime()