⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camera.h

📁 这是一款游戏中的粒子系统
💻 H
字号:
#pragma once
#include "BaseHeader.h"

class CCamera
{
public:
	enum CameraType { Land, Air };  //判断飞行物能否跳很高,使限制的因素

	CameraType      m_cameraType;     //摄像机类型
	D3DXVECTOR3		m_vEyePos;		// 摄像机的当前位置
	D3DXVECTOR3		m_vLookat;		// 摄像机的视线位置
	D3DXVECTOR3		m_vUp;			// 摄像机的上方向量
	D3DXVECTOR3		m_vRight;		// 摄像机的侧面向量  cross(view,up)
	float           m_fov;          //摄像机的张角
	float           m_width;        //当前窗口的宽高
	float           m_height;
	float           m_zn;
	float           m_fn;

public:
	CCamera(void);
	CCamera(CameraType type);                                             
	~CCamera(void);

	// 得到摄像机矩阵.
	void	GetViewMatrix(D3DXMATRIXA16* matView);

	//得到投影矩阵
	void    GetProjectMatrix(D3DXMATRIXA16* proj,float fovy,float aspect,float zn,float zf);
	// 设定创建摄像机矩阵的基本向量值.
	void	SetView( D3DXVECTOR3* pvEye,D3DXVECTOR3* pvLookat,D3DXVECTOR3* pvUp);

	// 设定摄像机的位置值.
	void	SetEyePos( D3DXVECTOR3* pv ) ;
	// 得到摄像机的位置值.
	D3DXVECTOR3*	GetEyePos();

	// 设定摄像机的视线值.
	void	SetLookat( D3DXVECTOR3* pv ) ;

	// 得到摄像机的视线值.
	D3DXVECTOR3*	GetLookat();

	// 设定摄像机的上方向量值.
	void	SetUp( D3DXVECTOR3* pv ) ;

	// 得到摄像机的上方向量值.
	D3DXVECTOR3* GetUp() ;

	//获得摄像机的类型
	void   setCameraType(CameraType type);

	//设定摄像机的类型
	CameraType getCameraType();

	// 更新值.
	void    Flush();

	// 以摄像机坐标系的X轴为轴旋转angle.
	void	RotateLocalX( float angle );

	// 以摄像机坐标系的Y轴为轴旋转angle.
	void	RotateLocalY( float angle );

	// 以摄像机坐标系的Z轴为轴旋转angle.
	void	RotateLocalZ( float angle );

	// 移动到世界坐标系的 *pv值的位置.
	void	MoveTo( D3DXVECTOR3* pv );

	// 朝着摄像机坐标系X轴方向前进dist(后退时为-dist)
	void	MoveLocalX( float dist );

	// 朝着摄像机坐标系Y轴方向前进dist(后退时为-dist)
	void	MoveLocalY( float dist );

	// 朝着摄像机坐标系Z轴方向前进dist(后退时为-dist)
	void	MoveLocalZ( float dist );

	//设置2D摄像机
	void    Set2DCamera(LPDIRECT3DDEVICE9 device,float windowW,float windowH);

	//设置3D摄像机
	void    Set3DCamera(LPDIRECT3DDEVICE9 device,float windowW,float windowH,float zn,float fn,float frustumFar);

	//获得视线的方向
	D3DXVECTOR3 GetDirection();

	//测试摄像机是否能够看见
	bool    CameraCanSee(D3DXVECTOR3 pos,float maxLength=0);

	//获得鼠标射线
	D3DXVECTOR3 GetCursorRay(POINT point);
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -