📄 mhcamera.h
字号:
// MHCamera.h: interface for the CMHCamera class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MHCAMERA_H__3EE48679_085F_4E12_AF97_C06D8AB29A00__INCLUDED_)
#define AFX_MHCAMERA_H__3EE48679_085F_4E12_AF97_C06D8AB29A00__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Angle.h"
#include ".\Engine\EngineCamera.h"
class CObject;
class CEngineObject;
struct MHCAMERASHAKE;
#define MAX_CAMERA_DESC 8
#define CAMERA USINGTON(CMHCamera)
enum eCAMERAMODE
{
eCM_Free = 0,
eCM_QuarterView,
eCM_FollowView,
eCM_LOGIN,
eCM_EyeView,
};
enum eCAMERASTATE
{
eCS_Normal,
eCS_Sit,
eCS_Die,
};
enum
{
eCP_CHARMAKE = 0,
eCP_CHARSEL,
eCP_INTERPOLATE,
eCP_MAX,
};
struct MHCAMERAPOS
{
float m_AngleX;
float m_AngleY;
float m_Dist;
VECTOR3 m_Pivot;
};
struct MHCAMERADESC
{
CAngle m_AngleX;
CAngle m_AngleY;
float m_fDistance;
VECTOR3 m_CameraPos;
VECTOR3 m_CameraDir;
VECTOR3 m_CameraDownVector;
VECTOR3 m_CameraDownPositon;
BOOL m_bCameraAngleMovingX;
DWORD m_CameraAngleMoveStartX;
DWORD m_CameraAngleMoveDurationX;
BOOL m_bCameraAngleMovingY;
DWORD m_CameraAngleMoveStartY;
DWORD m_CameraAngleMoveDurationY;
BOOL m_bCameraDistanceMoving;
DWORD m_CameraDistanceMoveStart;
DWORD m_CameraDistanceMoveDuration;
float m_fDistanceStart;
float m_fDistanceChange;
float m_CharHeight; //款扁吝俊绰 墨皋扼啊 辑辑洒 郴妨艾栏搁.
float m_StartCharHeight;
float m_TargetCharHeight;
BOOL m_bHeightChanging;
DWORD m_dwHeightStartTime;
DWORD m_dwHeightChangeDuration;
CObject* m_pPivotObject; // 笛吝俊 窍唱绰 怖 乐绢具 茄促.
VECTOR3 m_PivotPos;
BOOL m_bPivotObject; // TRUE 搁 PivotObject FALSE 搁 PivotPos
};
class CMHCamera
{
//camerafilter
CEngineObject* m_pCameraFilter;
float m_MinAngle;
float m_MaxAngle;
VECTOR3 m_DownVector;
DWORD m_CurCameraMode;
CEngineCamera m_EngineCamera;
MHCAMERADESC m_CameraDesc[MAX_CAMERA_DESC];
int m_CurCamera;
float m_fAddHeight;
//---sight distance option
float m_fDistanceRate; //50~100%
float m_fMaxSightDistance;
float m_fFov;
//////////////////////////////////////////////////////////////////////////
// 柳悼 扁瓷 备泅阑 困茄 函荐甸
VECTOR3 m_VibratePos;
VECTOR3 m_VibrateAngle;
VECTOR3 m_PushedVector;
DWORD m_VibrateDuration;
DWORD m_VibrateStartTime;
BOOL m_bIsVibrating;
void CalcVibration();
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// 溅捞农 扁瓷阑 困茄 函荐甸
MHCAMERASHAKE** m_ppCameraShakeDesc; // 溅捞欧 俊 措茄 Desc 甸..
VECTOR3 m_ShakingPos;
BOOL m_bIsShaking;
DWORD m_nCurShakingNum; // 泅犁 窍绊 乐绰 溅捞欧 Desc Index (-1捞搁 窍绊 乐瘤 臼促)
DWORD m_CurShakingPos; // 泅犁 柳青吝牢 溅捞欧 Desc郴俊辑狼 困摹
DWORD m_LastShakingPosChangedTime; // 付瘤阜栏肺 m_CurShakingPos甫 官槽 矫埃.
float m_Amplitude;
void CalcShaking();
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// 捞悼焊埃阑 困茄 函荐甸
MHCAMERAPOS m_MovePos[eCP_MAX];
int m_CurPosition;
int m_GotoPosition;
float m_MoveTime;
float m_MoveStartTime;
float m_MoveSpeed;
BOOL m_bMoved;
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// 墨皋扼磊蜡捞悼阑 困茄 函荐甸
DWORD m_LastMoveNoticeTime; // 某腐磐啊 捞悼沁促绊 辑滚俊 舅妨霖 矫埃
//////////////////////////////////////////////////////////////////////////
void CalcCameraPosAngle();
void CalcFreeCamera();
void ProcessCameraMode();
void ProcessCameraMoving();
void RestrictCameraAngleDistance();
void FollowCamera();
public:
CMHCamera();
// //MAKESINGLETON(CMHCamera);
~CMHCamera();
void Init(CObject* pObject,float angleX,float angleY,float fDistance);
void InitCamera(int CameraNum,float angleX,float angleY,float fDistance,CObject* pObject);
void InitCamera(int CameraNum,float angleX,float angleY,float fDistance,VECTOR3* pPivotPos);
void SetToEngineCamera();
void SetCameraFilter(CEngineObject* pEngineObj,float minAngle = 0,float maxAngle = gPHI/4);
void MouseRotate(int x,int y);
void Process();
void SetCurCamera(int Camera);
void SetCameraPivotObject(int Camera,CObject* pObject);
void SetCameraPivotPos(int Camera,VECTOR3* pPos);
void SetTargetAngleX(int Camera,float fAngleX,DWORD Duration);
void SetTargetAngleY(int Camera,float fAngleY,DWORD Duration);
void SetDistance(int Camera,float fDistance,DWORD Duration);
float GetDistance(int Camera) { return m_CameraDesc[Camera].m_fDistance; }
void Rotate(int Camera,float RotateAngle,DWORD Duration);
void ZoomDistance(int Camera,float fDistanceChange,DWORD Duration);
void ChangeCameraSmooth(int Camera,DWORD Duration); // 泅犁 墨皋扼俊辑 促弗 墨皋扼肺 何靛反霸 捞悼茄促.
void ChangeToDefaultCamera(); // 泅犁 墨皋扼狼 汲沥蔼阑 弊措肺 0锅 墨皋扼俊 悸泼茄促.
void StopAllMoving(int Camera); // 雀傈捞唱 淋殿阑 肛冕促.
void SetMaxSightDistance( float fMaxDistance ) { m_fMaxSightDistance = fMaxDistance; m_fDistanceRate = 0.0f; }
void SetCameraFov( float fFov ) { m_fFov = fFov; }
void SetSightDistanceRate( float fDistanceRate );
//////////////////////////////////////////////////////////////////////////
// 柳悼扁瓷阑 困茄 窃荐甸
void SetPushedVibration(VECTOR3* PushedVector,DWORD Duration);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// 溅捞欧 扁瓷阑 困茄 窃荐甸
void SetShaking(int ShakeNum, float amp);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// 捞悼焊埃阑 困茄 窃荐甸
void SetMovePos(int Index, MHCAMERAPOS* pCameraPos);
void MoveStart(int GotoIndex);
void Interpolation();
BOOL IsMoved() { return m_bMoved; }
int GetGotoPosition() { return m_GotoPosition; }
void ResetInterPolation();
//////////////////////////////////////////////////////////////////////////
int GetCameraMode() { return m_CurCameraMode; }
void SetCameraMode(int CameraMode);
void ToggleCameraViewMode();
void SetCharState( int eCharState, DWORD dwDuration );
// BOOL CanChangeCameraAngleTo( float xRad, float yRad );
void Fly( float fFly );
};
EXTERNGLOBALTON(CMHCamera)
#endif // !defined(AFX_MHCAMERA_H__3EE48679_085F_4E12_AF97_C06D8AB29A00__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -