68 lines
1.4 KiB
C++
68 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <windows.h>
|
|
//#include <vector>
|
|
#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();
|
|
}; |