Time.h
资源名称:g.rar [点击查看]
上传用户:laitongbao
上传日期:2021-02-20
资源大小:8176k
文件大小:1k
源码类别:
射击游戏
开发平台:
Visual C++
- #include"CGLApplication.h"
- #include<list>
- #ifndef TIME_H
- #define TIME_H
- #define INTERNAL_CLOCK g_pClock
- class Timer;
- class Clock
- {
- friend class Timer;
- public:
- ~Clock();
- void RegisterTimer(Timer*timer);
- void UnregisterTimer(Timer*timer);
- void Update();
- private:
- std::list<Timer*> timers;
- float frameTime;
- };
- class Timer
- {
- friend class Clock;
- public:
- Timer(Clock*source,float factor=1.f,float interval = 0.f);//source 一般为INTERNAL_CLOCK,factor是速度参数
- ~Timer();
- float GetTime();//返回从建立该对象到当前的时间,时间以秒为单位(与速度参数有关)
- float GetFrameTime();//返回上一帧的时间,这个时间其实是上8帧的平均值,用来平滑动画速度
- void Reset(float newTime=0);
- void Pause();
- void SetFactor(float factor);//设置速度参数
- void Continue();
- void SetInterval(float interval);
- void AddFunction(void(CALLBACK*func)(float));
- void RemoveFunction(void(CALLBACK*func)(float));
- void ClearFunction();
- private:
- Clock*source;
- bool active;
- float localTime;
- float scaleFactor;
- float frameTime;
- float interval;
- float lastTime;
- std::list<void(CALLBACK*)(float time)> funcList;
- };
- class FrameTimer
- {
- public:
- FrameTimer(int delay_);
- public:
- void startTimer();
- void update();
- void stopTimer();
- bool reach();
- bool isRunning();
- // data
- private:
- int delay;
- int currentFrame;
- };
- #endif