DragonNest/Client/ActorEternity/SaveCamera.h
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

72 lines
1.4 KiB
C++

#pragma once
#define CAMERA_FILE_STRING "Eternity Engine Camera File 0.1"
#define CAMERA_FILE_VERSION 10
#define FOV_W 0 // width-related FOV
#define FOV_H 1 // height-related FOV
#define FOV_D 2 // diagonal-related FOV
enum ExportCameraType
{
CT_FREE_CAMERA = 0,
CT_TARGET_CAMERA = 1,
};
struct SCameraFileHeader
{
char szHeaderString[ 256 ];
int nVersion;
int nFrame;
int nType;
int nFOVKeyCount;
int nPositionKeyCount;
int nRotationKeyCount;
float fDefaultFOV;
Point3 vDefaultPosition;
Quat qDefaultRotation;
char szCameraName[ 32 ];
char cReserved[ 1024 - 256 - sizeof( int ) * 7 - sizeof( Point3 ) - sizeof( Quat ) - 32 ];
};
struct SCameraPositionKey
{
int nTime;
Point3 Position;
};
struct SCameraRotationKey
{
int nTime;
Quat Rotation;
};
struct SCameraFOVKey
{
int nTime;
float fFOV;
};
class CSaveCamera
{
public:
CSaveCamera(void);
virtual ~CSaveCamera(void);
protected:
INode *m_pNode;
Interface *m_pMaxInterface;
SCameraFileHeader m_Header;
std::vector< SCameraPositionKey > m_vecPosition;
std::vector< SCameraRotationKey > m_vecRotation;
std::vector< SCameraFOVKey > m_vecFOV;
public:
void ProcessCamera( FILE *fp, INode *pNode, Interface *pMaxInterface, bool bExportTargetCamera );
void GetAniData();
void DumpFOVSample();
void DumpPosSample( INode *pNode, std::vector< SCameraPositionKey > &vecTargetPosition );
void DumpRotSample();
void WriteCameraInfo( FILE *fp );
};