Files
Leviathan/Client/Game/game/Main/SGameCameraWork.h
T
2026-06-01 12:46:52 +02:00

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();
};