#pragma once #include //#include #include "KTypes.h" #include "K3DTypes.h" #include "MapDefine.h" typedef NFM_CAMERA_WORK_STRUCT_V1 FRAME_INFO; typedef std::vector< FRAME_INFO* > VEC_FRAME_INFO; class SGameCamera; class K3DCamera; class SGame; namespace { struct Frame { DWORD dwFrameTime; int nFrameNum; NFM_CAMERA_WORK_STRUCT_V1* pCameraWorkInfo; Frame() : dwFrameTime( 0 ) , nFrameNum( 0 ) , pCameraWorkInfo( NULL ) { } }; }; class SGameCameraWork { private: SGame* m_pGame; SGameCamera* m_pGameCamera; K3DCamera* m_pBackUpCamera; VEC_FRAME_INFO m_vFrameInfo; int m_nCurrentFrame; DWORD m_dwStartTime; bool m_bStop; bool m_bEnd; Frame* m_pFrame; size_t m_nFrameSize; K3DVector m_vCurCameraPos; K3DVector m_vCurTargetPos; float m_fCamRotation; float m_fTarRotation; public: void LoadCameraWork( const char* szCameraWorkFileName, int nPosX, int nPosY, float fMapLen ); void CalcRotation( K3DVector& vOut, K3DVector& vPos, K3DVector& vTarget, float fRotation ); void Process( DWORD dwTime ); bool IsStop() { return m_bStop; } void Stop(); int GetNumberOfFrame( DWORD dwTime ); Frame* GetFrameByNumberOfFrame( int nNumOfFrame ); int GetLastFrame(); public: SGameCameraWork( SGame* pGame, SGameCamera* pGameCamera ); ~SGameCameraWork(); };