#pragma once #include "akLinker.h" #include namespace akSTL { class akSTL_DLLSPEC CakTimeManager { public: enum PlayMode { Play, Stop, Pause, Playing, PlayEnd, SettingTime }; public: CakTimeManager(void); virtual ~CakTimeManager(void); //½ÃÀÛ ÁßÁö(±¸¹öÀü) //¹è¼Ó Àû¿ë ¾È¹ÞÀ½ inline void SetBegin(); inline void SetEnd(); inline double GetRunTimeSec(); //½ÃÀ۽ð£ ÀúÀåÇϰí Á¾·á½Ã°£±îÁöÀÇ Å¸ÀÓ(ÃÊ´ÜÀ§) inline double GetRunTimeMsec(); //½ÃÀ۽ð£ ÀúÀåÇϰí Á¾·á½Ã°£±îÁöÀÇ Å¸ÀÓ(ÃÊ´ÜÀ§) inline double GetFrameRate(); //Ç÷¹À̹٠±â´É(½Å¹öÀü) void SetInit();//Ãʱ⠼³Á¤À¸·Î µÇµ¹¸² virtual inline void SetPlay(); virtual inline void SetStop(); virtual inline void SetTime(int msec); virtual inline void SetPause(); virtual inline double GetTime(int type=0); //0=Sec, 1=MSec virtual inline void GetTime(int* h, int* m, int* s, int* ms); virtual inline PlayMode GetPlayMode(); virtual inline void SetSpeedRate(double speedrate); //¹è¼Ó ¼³Á¤(0º¸´Ù Å« ½Ç¼ö ÀԷ°¡´É) virtual inline double GetSpeedRate(); //¹è¼Ó ¼³Á¤°ª Àбâ protected: LARGE_INTEGER m_Frequency; LARGE_INTEGER m_BeginTime; LARGE_INTEGER m_Endtime; double m_PauseTime; double m_LastTime; PlayMode m_PlayState; double m_SpeedRate; //¹è¼Ó //ÄÝ¹é µ¥ÀÌÅÍ °ü¸® public: typedef void (*MsgCallbackFunc) (int msg, void*); void setMsgCallbackFunc(MsgCallbackFunc userFunc, void* data = NULL) { m_msgCallbackFunc = userFunc; m_MsgCallbackFuncData = data; }; protected: void* m_MsgCallbackFuncData; MsgCallbackFunc m_msgCallbackFunc; int m_nSyncObject; }; class akSTL_DLLSPEC CakTimeManagerAdv : public CakTimeManager { public: CakTimeManagerAdv(void); virtual ~CakTimeManagerAdv(void); public: virtual inline void SetPlay(); virtual inline void SetTime(int msec); virtual inline void SetStop(); protected: void setEnd();//Ç÷¹ÀÌ ½Ã°£ÀÌ ÃÖ´ë ½Ã°£À» ³Ñ¾úÀ» °æ¿ì È£Ãâ public: double m_timeMax; public: static void threadPlayer(void* arg); int m_flagThreadPlayer; private: bool m_bPlaying; }; }