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