📄 sceneobject.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 + -