pcce::Scene Class Reference

#include <Scene.h>

List of all members.

Public Member Functions

 Scene ()
 Scene (Ogre::SceneType sceneType)
 Scene (Ogre::SceneManager *sceneManager)
 ~Scene ()
Ogre::SceneManager * GetOgreSceneManager ()
Ogre::Entity * CreateOgreEntity (tGameObjectPtr gameObject)
void RemoveEntity (Ogre::Entity *entity)
void RemoveEntity (tGameObjectPtr gameObject)
tGameObjectID GetGameObjectID (Ogre::Entity *entity)
tGameObjectPtr GetGameObject (Ogre::Entity *entity)
Ogre::Camera * CreateOgreCamera ()
Ogre::Camera * GetOgreCamera ()

Private Types

typedef std::map< Ogre::Entity
*, tGameObjectID
tEntityGameObjectMap

Private Attributes

tEntityGameObjectMap mEntityGameObjectMap
Ogre::SceneManager * mOgreScene
Ogre::Camera * mOgreCamera


Detailed Description

Definition at line 44 of file Scene.h.


Member Typedef Documentation

typedef std::map< Ogre::Entity*, tGameObjectID > pcce::Scene::tEntityGameObjectMap [private]

Definition at line 65 of file Scene.h.


Constructor & Destructor Documentation

Scene::Scene (  ) 

Definition at line 42 of file Scene.cpp.

References mOgreScene.

00042             : mEntityGameObjectMap(), mOgreScene(NULL), mOgreCamera(NULL) {
00043   mOgreScene = Ogre::Root::getSingleton().createSceneManager(Ogre::ST_GENERIC);
00044 }

Scene::Scene ( Ogre::SceneType  sceneType  ) 

Definition at line 46 of file Scene.cpp.

References mOgreScene.

00046                                    : mOgreScene(NULL), mOgreCamera(NULL) {
00047   mOgreScene = Ogre::Root::getSingleton().createSceneManager(sceneType);
00048 }

Scene::Scene ( Ogre::SceneManager *  sceneManager  ) 

Definition at line 50 of file Scene.cpp.

References mOgreCamera, mOgreScene, and PCCE_CHECK.

00050                                           : mOgreScene(sceneManager), mOgreCamera(NULL) {
00051   Ogre::SceneManager::CameraIterator c = mOgreScene->getCameraIterator();
00052   if (c.hasMoreElements()) { 
00053     mOgreCamera = c.getNext();
00054     PCCE_CHECK(mOgreCamera != NULL, "Scene Ogre::CameraIterator returned null");
00055   }
00056   PCCE_CHECK(!c.hasMoreElements(), "Scene cannot have multiple cameras");
00057 }

Scene::~Scene (  ) 

Definition at line 59 of file Scene.cpp.

References pcce::Singleton< T >::Get(), and mOgreScene.

00059               {
00060   tIEventPtr sceneEvent(new DeleteSceneEvent(mOgreScene));      
00061   EventSystemSingleton::Get()->DispatchEvent(sceneEvent);
00062 }


Member Function Documentation

Ogre::SceneManager * Scene::GetOgreSceneManager (  ) 

Definition at line 64 of file Scene.cpp.

References mOgreScene.

00064                                              {
00065   return mOgreScene;
00066 }

Ogre::Entity * Scene::CreateOgreEntity ( tGameObjectPtr  gameObject  ) 

Definition at line 68 of file Scene.cpp.

References mEntityGameObjectMap, mOgreScene, and PCCE_CHECK.

00068                                                              {
00069   PCCE_CHECK(gameObject, "Scene::CreateOgreEntity: Cannot add empty game object to scene");
00070   PCCE_CHECK(!gameObject->HasEntity(), "Scene::CreateOgreEntity: Game object already has entity");
00071   
00072   Ogre::Entity* result = mOgreScene->createEntity("", "");
00073   mEntityGameObjectMap.insert(tEntityGameObjectMap::value_type(result, gameObject->GetID()));
00074   gameObject->SetEntity(result);
00075   
00076   return result;
00077 }

void Scene::RemoveEntity ( Ogre::Entity *  entity  ) 

Definition at line 79 of file Scene.cpp.

References pcce::Singleton< T >::Get(), and mEntityGameObjectMap.

00079                                            {
00080   tEntityGameObjectMap::iterator i = mEntityGameObjectMap.find(entity);
00081   if (i != mEntityGameObjectMap.end()) {
00082     tGameObjectPtr gameObject = GameObjectDBSingleton::Get()->GetGameObject(i->second);
00083     mEntityGameObjectMap.erase(i);
00084     gameObject->SetEntity(NULL);
00085   }
00086 }

void Scene::RemoveEntity ( tGameObjectPtr  gameObject  ) 

Definition at line 88 of file Scene.cpp.

References mEntityGameObjectMap.

00088                                                   {
00089   tEntityGameObjectMap::iterator i = mEntityGameObjectMap.find(gameObject->GetEntity());
00090   if (i != mEntityGameObjectMap.end()) {
00091     mEntityGameObjectMap.erase(i);
00092     gameObject->SetEntity(NULL);
00093   }
00094 }

tGameObjectID Scene::GetGameObjectID ( Ogre::Entity *  entity  ) 

Definition at line 96 of file Scene.cpp.

References mEntityGameObjectMap, and PCCE_CHECK.

Referenced by GetGameObject().

00096                                                        {
00097   tEntityGameObjectMap::const_iterator i = mEntityGameObjectMap.find(entity);
00098   PCCE_CHECK(i != mEntityGameObjectMap.end(), "Scene::GetGameObjectID: Unknown entity");
00099   return i->second;
00100 }

tGameObjectPtr Scene::GetGameObject ( Ogre::Entity *  entity  ) 

Definition at line 102 of file Scene.cpp.

References pcce::Singleton< T >::Get(), and GetGameObjectID().

00102                                                       {
00103   tGameObjectID id = GetGameObjectID(entity);
00104   return GameObjectDBSingleton::Get()->GetGameObject(id);
00105 }

Ogre::Camera * Scene::CreateOgreCamera (  ) 

Definition at line 107 of file Scene.cpp.

References mOgreCamera, mOgreScene, and PCCE_CHECK.

00107                                     {
00108   PCCE_CHECK(mOgreCamera == NULL, "Scene already has a camera created");
00109   
00110   mOgreCamera = mOgreScene->createCamera("Camera");
00111   mOgreCamera->setFixedYawAxis(false);
00112   mOgreCamera->setPosition(0,50,0);
00113   mOgreCamera->lookAt(0,0,0);
00114   mOgreCamera->setNearClipDistance(10);
00115   
00116   return mOgreCamera;
00117 }

Ogre::Camera * Scene::GetOgreCamera (  ) 

Definition at line 119 of file Scene.cpp.

References mOgreCamera.

00119                                  {
00120   return mOgreCamera;
00121 }


Member Data Documentation

Definition at line 66 of file Scene.h.

Referenced by CreateOgreEntity(), GetGameObjectID(), and RemoveEntity().

Ogre::SceneManager* pcce::Scene::mOgreScene [private]

Definition at line 68 of file Scene.h.

Referenced by CreateOgreCamera(), CreateOgreEntity(), GetOgreSceneManager(), Scene(), and ~Scene().

Ogre::Camera* pcce::Scene::mOgreCamera [private]

Definition at line 69 of file Scene.h.

Referenced by CreateOgreCamera(), GetOgreCamera(), and Scene().


The documentation for this class was generated from the following files:

Generated on Thu Mar 6 11:39:28 2008 for Protocce by  doxygen 1.5.5