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

📄 dotscenemanager.cpp

📁 使用stl技术,(还没看,是听说的)
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////
// DotSceneManager.h
// Author     : Doug Wolanick
// Start Date : May 27, 2003
// Copyright  : (C) 2003 by Doug Wolanick
// Email      : Doug@IceTecStudios.com
////////////////////////////////////////////////////////////////////////////////

/***************************************************************************
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU Lesser General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************/

#include <DotSceneManager.h>
#include <OgreImage.h>
#include <OgreConfigFile.h>
#include <OgreMaterial.h>
#include <OgreCamera.h>
#include "OgreException.h"
#include "OgreStringConverter.h"
#include <OgreRenderSystem.h>
#include <OgreEntity.h>
#include <OgreSubEntity.h>
#include <OgreSceneNode.h>
#include <OgreMovableObject.h>
#include <fstream>
#include <vector>
#include <OgreLogManager.h>

using namespace Ogre;
using namespace std;

DotSceneManager::DotSceneManager()
{
	SceneManager();
	OctreeVisible = 0;
}

DotSceneManager::~DotSceneManager()
{	
}

void DotSceneManager::addWorldGeometry( const String& filename )
{
	mSceneMain = new SceneMain();

	mSceneMain->SetSceneManager( this );
	mSceneMain->Load( filename );

	LoadedScenes.push_back( mSceneMain );
}

void DotSceneManager::addWorldGeometry( const String& filename , const String& name, float xOffset, float zOffset )
{
	mSceneMain = new SceneMain();

	mSceneMain->SetSceneManager( this );
	mSceneMain->SetPos( xOffset, 0 , zOffset );
	mSceneMain->SetName( name );

	mSceneMain->Load( filename );

	LoadedScenes.push_back( mSceneMain );
}

void DotSceneManager::removeWorldGeometry( const String &name )
{
	vector <SceneMain*>::iterator CurScene;

	for( CurScene = LoadedScenes.begin(); CurScene != LoadedScenes.end(); ++CurScene )
	{
		if( (*CurScene)->GetName() == name )
		{
			(*CurScene)->Unload();
			delete( *CurScene );

			CurScene = LoadedScenes.erase( CurScene );
		}
	}	
}

void DotSceneManager::removeAllWorldGeometry( void )
{
	vector <SceneMain*>::iterator CurScene;

	for( CurScene = LoadedScenes.begin(); CurScene != LoadedScenes.end(); ++CurScene )
	{
		(*CurScene)->Unload();
		delete( *CurScene );
	}

	LoadedScenes.clear();
}

void DotSceneManager::clearScene( void )
{
	removeAllWorldGeometry();
	SceneManager::clearScene();
}

void DotSceneManager::SetOctreeVisible( int Value )
{
	if( Value != OctreeVisible )
	{
		OctreeVisible = Value;

		vector <SceneMain*>::iterator CurScene;
		for( CurScene=LoadedScenes.begin(); CurScene!=LoadedScenes.end(); ++CurScene )
		{
			(*CurScene)->SetOctreeVisible( Value );
		}
	}
}

void DotSceneManager::_updateSceneGraph( Camera * cam )
{
	SceneManager::_updateSceneGraph( cam );	
}

void DotSceneManager::_renderVisibleObjects( void )
{
	SceneManager::_renderVisibleObjects();

	SceneOctreeRenderable::mRenderedTris = 0;
}

void DotSceneManager::_findVisibleObjects ( Camera * cam )
{
	mRenderQueue->clear();	
	SceneManager::_findVisibleObjects( cam, false );
	
	// Uncomment this to do no frustum culling - For Debug Purposes
	/*
	vector <SceneMain*>::iterator CurScene;

	for( CurScene = LoadedScenes.begin(); CurScene != LoadedScenes.end(); ++CurScene )
	{
		std::vector <SceneOctreeRenderable*> RenderableList;
		std::vector <SceneOctreeRenderable*>::iterator CurRenderable;		

		RenderableList = (*CurScene)->GetAllRenderables();


		for( CurRenderable=RenderableList.begin(); CurRenderable!=RenderableList.end(); ++CurRenderable )
		{
			mRenderQueue->addRenderable( *CurRenderable );
		}
	}*/
	

}

bool DotSceneManager::getOptionValues( const String & key, std::list < SDDataChunk > &refValueList )
{
	return SceneManager::getOptionValues( key, refValueList );
}

bool DotSceneManager::getOptionKeys( std::list < String > & refKeys )
{
    SceneManager::getOptionKeys( refKeys );

    return true;
}

⌨️ 快捷键说明

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