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

📄 sceneobject.h

📁 3D赛车游戏源代码-用Visual Studio 2005
💻 H
字号:
//////////////////////////////////////////////////////////////////////////
//  CSceneObject类,场景对象类,所有可以在场景在显示的对象都要继承它。
//
//  SceneObject.h: CSceneObject类的声明
//
//  Copy Rights Wonderful 2006
//////////////////////////////////////////////////////////////////////////

#ifndef __SCENEOBJECT_H_INCLUDED__
#define __SCENEOBJECT_H_INCLUDED__

#include "Matrix.h"
#include "AABB3.h"
#include "Sphere.h"
#include "../gameplay/ObjectDataTypes.h"

//-------------------------------------------------------------------------------
// 前向声明
//-------------------------------------------------------------------------------
class CSceneManager;

//-------------------------------------------------------------------------------
// 场景物体
//-------------------------------------------------------------------------------
class CSceneObject
{
public:
	// 构造析构函数
	CSceneObject();
	virtual ~CSceneObject();

	//---------------------------场景和渲染相关------------------------------

	// 将该对象添加到场景中
	void AddToScene();			
	// 把该对象从场景中删除
	void RemoveFromScene();		
	
	// 渲染这个对象
	virtual void RenderObject();	

	//-------------------------------数据访问---------------------------------

	// 设置转换矩阵,将导致世界坐标包围盒子、球、还有场景位置等一系列变换
	void SetTransform(const CMatrix44F &mat); 
	// 设置场景管理器
	void SetSceneManage(CSceneManager *pSceneManager) { m_pSceneManager = pSceneManager; }

	const CMatrix44F&	GetTransformObjToWorld() const { return m_mxTransformObjToWorld; }
	const CMatrix44F&	GetTransformWorldToObj() const { return m_mxTransformWorldToObj; }
	Vector3				GetPosition() const { return GetTranslation(m_mxTransformObjToWorld); }
	const AABB3&		GetObjectBox() const { return m_boxObjectBox; }
	const AABB3&		GetWorldBox()  const { return m_boxWorldBox; }
	const CSphere&		GetWorldSphere() const { return m_sphWorldSphere; }
	unsigned int		GetType() const { return m_nTypeMask; }

protected:
	// 重置世界坐标的边界框
	void ResetWorldBox(); 

protected:
	CMatrix44F    m_mxTransformObjToWorld;	// 物体到世界矩阵
	CMatrix44F	  m_mxTransformWorldToObj;	// 世界到物体矩阵
	AABB3         m_boxObjectBox;			// 物体盒子
	AABB3         m_boxWorldBox;			// 世界盒子
	CSphere	      m_sphWorldSphere;			// 世界球
	unsigned int  m_nTypeMask;				// 对象类型

	CSceneManager *m_pSceneManager;			// 场景管理器
};


#endif

⌨️ 快捷键说明

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