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

📄 scenemanager.cpp

📁 3D赛车游戏源代码-用Visual Studio 2005
💻 CPP
字号:
#include "StdAfx.h"
#include "SceneManager.h"
#include "SceneObject.h"
#include "../gameplay/StaticActor.h"
#include "../model/Model.h"
#include "Frustum.h"

//-------------------------------------------------------------------------------
// 场景管理器全局对象
//-------------------------------------------------------------------------------
CSceneManager g_SceneManager;

//-------------------------------------------------------------------------------
// 构造函数
//-------------------------------------------------------------------------------
CSceneManager::CSceneManager()
{
}

//-------------------------------------------------------------------------------
// 析构函数
//-------------------------------------------------------------------------------
CSceneManager::~CSceneManager()
{
}

//-------------------------------------------------------------------------------
// 添加物体到场景
//-------------------------------------------------------------------------------
bool CSceneManager::AddObjectToScene(CSceneObject *obj)
{
	m_ObjList.push_back(obj);
	return true;
}

//-------------------------------------------------------------------------------
// 添加物体到场景
//-------------------------------------------------------------------------------
bool CSceneManager::AddObjectToQuadTree(CSceneObject *obj, float fWidth, float fHeight)
{
	CStaticActor *pActor = (CStaticActor *)obj;
	Model *pModel = pActor->GetModel();
	m_oQuadTree.CreateQuadTree(pModel->GetPartMesh(0), pModel->GetPartTexture(0), fWidth, fHeight);
	return true;
}

//-------------------------------------------------------------------------------
// 从场景中移除物体
//-------------------------------------------------------------------------------
void CSceneManager::RemoveObjectFromScene(CSceneObject *obj)
{
	ObjectList::iterator itr;
	
	for (itr = m_ObjList.begin(); itr != m_ObjList.end(); ++itr)
	{
		if (obj == (*itr))
		{
			m_ObjList.erase(itr);
			break;
		}
	}
}

//-------------------------------------------------------------------------------
// 渲染场景
//-------------------------------------------------------------------------------
void CSceneManager::RenderScene()
{
	g_Frustum.CalculateFrustum();

	ObjectList::const_iterator itr;

	for (itr = m_ObjList.begin(); itr != m_ObjList.end(); ++itr)
	{
		CSceneObject *pCurObj = *itr;

		if (g_Frustum.SphereInFrustum(pCurObj->GetWorldSphere()))
		{
			pCurObj->RenderObject();
		}
	}

	m_oQuadTree.DrawQuadTree();
}

⌨️ 快捷键说明

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