56 #ifdef ENABLE_OALS_AUDIO_IMPLEMENTATION
58 #include "Audio/OALS/oalsaudiomanagerfactory.h"
59 #include "Audio/OALS/oalssoundscapemanagerfactory.h"
60 #endif //ENABLE_OALS_AUDIO_IMPLEMENTATION
66 #include "OgreParticleFXPlugin.h"
71 #include <btBulletDynamicsCommon.h>
80 template<> Entresol* Singleton<Entresol>::SingletonPtr = NULL;
86 Ogre::Root* OgreCore = NULL;
93 void Entresol::SetupLogging(
const String& LogFileName)
96 Ogre::LogManager* OgreLogs = Ogre::LogManager::getSingletonPtr();
97 if( NULL == OgreLogs )
98 { OgreLogs =
new Ogre::LogManager(); }
100 if(!LogFileName.empty())
102 OgreLogs->createLog(
String(
"Graphics")+LogFileName,
true,
true);
106 OgreLogs->createLog(
"GraphicsMezzanine.log",
true,
true);
108 this->Aggregator =
new Threading::LogAggregator();
109 Aggregator->SetAggregationTarget(&WorkScheduler);
110 this->WorkScheduler.AddWorkUnitMain(Aggregator,
"LogAggregator");
113 void Entresol::DestroyLogging()
115 this->WorkScheduler.RemoveWorkUnitMain(Aggregator);
119 void Entresol::SetupOgre()
121 if ( NULL == OgreCore )
122 { OgreCore =
new Ogre::Root(
"",
"",
""); }
124 { OgreCore = Ogre::Root::getSingletonPtr(); }
127 void Entresol::DestroyOgre()
130 delete Ogre::Root::getSingletonPtr();
132 delete SubSystemParticleFXPlugin;
142 std::vector <ManagerBase*> temp;
144 this->Construct(PhysicsInfo,
"DefaultSceneManager",
".",
"Mezzanine.log",temp);
150 if(String::npos != InitializerFile.find(
".mxi"))
151 { ConstructFromXML(EngineDataPath, ArchType, InitializerFile); }
153 { MEZZ_EXCEPTION(Exception::NOT_IMPLEMENTED_EXCEPTION,
"Attempting to initialze Mezzanine from an unsupported file type."); }
158 for(std::vector<ManagerFactory*>::iterator it = CustomFactories.begin(); it != CustomFactories.end(); ++it)
160 AddManagerFactory( (*it) );
163 if(String::npos != InitializerFile.find(
".mxi"))
164 { ConstructFromXML(EngineDataPath, ArchType, InitializerFile); }
166 { MEZZ_EXCEPTION(Exception::NOT_IMPLEMENTED_EXCEPTION,
"Attempting to initialze Mezzanine from an unsupported file type."); }
172 const String& EngineDataPath,
173 const String& LogFileName)
175 std::vector <ManagerBase*> temp;
176 this->Construct(PhysicsInfo,
185 const String& EngineDataPath,
186 const String& LogFileName,
187 const std::vector <ManagerBase*>& ManagerToBeAdded)
189 this->Construct(PhysicsInfo,
199 const String& EngineDataPath,
200 const String& LogFileName,
201 const std::vector <ManagerBase*>& ManagerToBeAdded )
205 AddAllEngineDefaultManagerFactories();
207 this->ManualLoopBreak = 0;
210 SetupLogging(LogFileName);
213 SubSystemParticleFXPlugin =
new Ogre::ParticleFXPlugin();
214 Ogre::Root::getSingleton().installPlugin(SubSystemParticleFXPlugin);
217 for(std::vector<ManagerBase*>::const_iterator iter = ManagerToBeAdded.begin(); iter!= ManagerToBeAdded.end(); iter++)
218 { this->AddManager(*iter); }
223 if(this->GetActorManager()==0)
224 { this->AddManager(
new ActorManager()); }
225 if(this->GetAreaEffectManager()==0)
226 { this->AddManager(
new AreaEffectManager()); }
227 if(this->GetResourceManager()==0)
228 { this->AddManager(
new ResourceManager(EngineDataPath)); }
229 if(this->GetGraphicsManager()==0)
230 { this->AddManager(
new Graphics::GraphicsManager()); }
231 if(this->GetEventManager()==0)
232 { this->AddManager(
new EventManager()); }
233 if(this->GetInputManager()==0)
234 { this->AddManager(
new Input::InputManager()); }
235 if(this->GetPhysicsManager()==0)
236 { this->AddManager(
new Physics::PhysicsManager(PhysicsInfo)); }
237 if(this->GetSceneManager()==0)
238 { this->AddManager(
new Graphics::SceneManager(SceneType)); }
239 if(this->GetUIManager()==0)
240 { this->AddManager(
new UI::UIManager()); }
241 if(this->GetMeshManager()==0)
242 { this->AddManager(
new Graphics::MeshManager()); }
243 if(this->GetCollisionShapeManager()==0)
244 { this->AddManager(
new Physics::CollisionShapeManager()); }
245 if(this->GetCameraManager()==0)
246 { this->AddManager(
new Graphics::CameraManager()); }
247 if(this->GetDebrisManager()==0)
248 { this->AddManager(
new DebrisManager()); }
249 #ifdef ENABLE_OALS_AUDIO_IMPLEMENTATION
250 if(this->GetAudioManager()==0)
251 { this->AddManager( this->CreateManager(
"OALSAudioManager",Params,
false) ); }
252 if(this->GetSoundScapeManager()==0)
253 { this->AddManager( this->CreateManager(
"OALSSoundScapeManager",Params,
false) ); }
254 #endif //ENABLE_OALS_AUDIO_IMPLEMENTATION
263 AddAllEngineDefaultManagerFactories();
265 this->ManualLoopBreak =
false;
271 SubSystemParticleFXPlugin =
new Ogre::ParticleFXPlugin();
272 Ogre::Root::getSingleton().installPlugin(SubSystemParticleFXPlugin);
275 XML::Attribute CurrAttrib;
276 String GUIInit, ResourceInit, PluginsInit, LogFileName;
277 String PluginExtension, PluginPath;
282 if(ResourceManager::SingletonValid())
283 { AddManager(ResourceManager::GetSingletonPtr()); }
285 { AddManager(
new ResourceManager(EngineDataPath, ArchType)); }
288 ResourceManager* ResourceMan = GetResourceManager();
290 Resource::FileStream InitStream(InitializerFile,EngineDataPath);
291 XML::Document InitDoc;
292 XML::ParseResult DocResult = InitDoc.Load(InitStream);
296 ExceptionStream <<
"Failed to parse XML file \"" << InitializerFile <<
"\".";
297 MEZZ_EXCEPTION(Exception::SYNTAX_ERROR_EXCEPTION_XML,ExceptionStream.str());
299 XML::Node InitRoot = InitDoc.GetChild(
"InitializerRoot");
300 if( InitRoot.Empty() )
303 ExceptionStream <<
"Failed to find expected Root node in \"" << InitializerFile <<
"\".";
304 MEZZ_EXCEPTION(Exception::SYNTAX_ERROR_EXCEPTION_XML,ExceptionStream.str());
308 XML::Node WorldSettings = InitRoot.GetChild(
"WorldSettings");
309 for( XML::NodeIterator SetIt = WorldSettings.begin() ; SetIt != WorldSettings.end() ; ++SetIt )
311 String SecName = (*SetIt).Name();
312 if(
"FrameSettings" == SecName )
314 CurrAttrib = (*SetIt).GetAttribute(
"TargetFrameRate");
315 if(CurrAttrib.Empty())
317 CurrAttrib = (*SetIt).GetAttribute(
"TargetFrameTime");
318 if(!CurrAttrib.Empty())
319 SetTargetFrameTimeMicroseconds(CurrAttrib.AsWhole());
321 this->SetTargetFrameRate(CurrAttrib.AsWhole());
326 MEZZ_EXCEPTION(Exception::SYNTAX_ERROR_EXCEPTION_XML,
String(
"Unknown WorldSetting ")+SecName);
331 SetupLogging(LogFileName);
334 XML::Node InitFiles = InitRoot.GetChild(
"OtherInitializers");
335 for( XML::NodeIterator InitIt = InitFiles.begin() ; InitIt != InitFiles.end() ; ++InitIt )
337 String InitFileName = (*InitIt).Name();
338 if(
"PluginInit" == InitFileName )
340 CurrAttrib = (*InitIt).GetAttribute(
"FileName");
341 if(!CurrAttrib.Empty())
342 PluginsInit = CurrAttrib.AsString();
344 else if(
"ResourceInit" == InitFileName )
346 CurrAttrib = (*InitIt).GetAttribute(
"FileName");
347 if(!CurrAttrib.Empty())
348 ResourceInit = CurrAttrib.AsString();
350 else if(
"GUIInit" == InitFileName )
352 CurrAttrib = (*InitIt).GetAttribute(
"FileName");
353 if(!CurrAttrib.Empty())
354 GUIInit = CurrAttrib.AsString();
362 Resource::FileStream ResourceStream(ResourceInit,EngineDataPath);
363 XML::Document ResourceDoc;
364 ResourceDoc.Load(ResourceStream);
365 // Get an iterator to the first resource group node, and declare them all.
366 XML::Node ResourceLocations = ResourceDoc.GetChild("ResourceLocations");
367 for( XML::NodeIterator GroupIt = ResourceLocations.begin() ; GroupIt != ResourceLocations.end() ; ++GroupIt )
369 String GroupName, GroupType, GroupPath;
370 bool GroupRecursive = false;
371 // Get the group path
372 CurrAttrib = (*GroupIt).GetAttribute("GroupPath");
373 if(!CurrAttrib.Empty())
374 GroupPath = CurrAttrib.AsString();
375 // Get the group type
376 CurrAttrib = (*GroupIt).GetAttribute("GroupType");
377 if(!CurrAttrib.Empty())
378 GroupType = CurrAttrib.AsString();
379 // Get the group name
380 CurrAttrib = (*GroupIt).GetAttribute("GroupName");
381 if(!CurrAttrib.Empty())
382 GroupName = CurrAttrib.AsString();
383 // Get whether this is recursive
384 CurrAttrib = (*GroupIt).GetAttribute("Recursive");
385 if(!CurrAttrib.Empty())
386 GroupRecursive = StringTool::ConvertToBool(CurrAttrib.AsString());
387 // Finally create the resource location.
388 ResourceMan->AddAssetLocation(GroupPath,GroupType,GroupName,GroupRecursive);
390 // Get what resource groups should be initialized.
391 XML::Node InitGroups = ResourceDoc.GetChild("InitGroups");
392 for( XML::NodeIterator InitIt = InitGroups.begin() ; InitIt != InitGroups.end() ; ++InitIt )
395 CurrAttrib = (*InitIt).GetAttribute("GroupName");
396 if(!CurrAttrib.Empty())
397 GroupName = CurrAttrib.AsString();
398 ResourceMan->InitAssetGroup(GroupName);
403 XML::Node Managers = InitRoot.GetChild(
"Managers");
404 for( XML::NodeIterator ManIt = Managers.begin() ; ManIt != Managers.end() ; ++ManIt )
406 CreateManager( (*ManIt).Name(), (*ManIt) );
410 if(!ResourceInit.empty())
413 Resource::FileStream ResourceStream(ResourceInit,EngineDataPath);
414 XML::Document ResourceDoc;
415 ResourceDoc.Load(ResourceStream);
417 XML::Node ResourceLocations = ResourceDoc.GetChild(
"ResourceLocations");
418 for( XML::NodeIterator GroupIt = ResourceLocations.begin() ; GroupIt != ResourceLocations.end() ; ++GroupIt )
420 String GroupName, GroupPath;
422 bool GroupRecursive =
false;
424 CurrAttrib = (*GroupIt).GetAttribute(
"GroupPath");
425 if(!CurrAttrib.Empty())
426 GroupPath = CurrAttrib.AsString();
428 CurrAttrib = (*GroupIt).GetAttribute(
"GroupType");
429 if(!CurrAttrib.Empty())
430 GroupType = ResourceManager::GetArchiveTypeFromString(CurrAttrib.AsString());
432 CurrAttrib = (*GroupIt).GetAttribute(
"GroupName");
433 if(!CurrAttrib.Empty())
434 GroupName = CurrAttrib.AsString();
436 CurrAttrib = (*GroupIt).GetAttribute(
"Recursive");
437 if(!CurrAttrib.Empty())
438 GroupRecursive = StringTools::ConvertToBool(CurrAttrib.AsString());
440 ResourceMan->AddAssetLocation(GroupPath,GroupType,GroupName,GroupRecursive);
443 XML::Node InitGroups = ResourceDoc.GetChild(
"InitGroups");
444 for( XML::NodeIterator InitIt = InitGroups.begin() ; InitIt != InitGroups.end() ; ++InitIt )
447 CurrAttrib = (*InitIt).GetAttribute(
"GroupName");
448 if(!CurrAttrib.Empty())
449 GroupName = CurrAttrib.AsString();
450 ResourceMan->InitAssetGroup(GroupName);
464 void Entresol::SanityChecks()
472 if(
sizeof(Input::InputCode) !=
sizeof(SDL_Scancode))
474 MEZZ_EXCEPTION(Exception::INVALID_STATE_EXCEPTION,
"User input subsystem Event Sizes Don't match, userinput subsystem will go be buggier than a highschool fortran class.");
477 if(
sizeof(Input::InputCode) !=
sizeof(
int))
479 MEZZ_EXCEPTION(Exception::INVALID_STATE_EXCEPTION,
"Internal User input subsystem Event Sizes Don't match, userinput subsystem cannot function.");
483 bool Entresol::VerifyManagerInitializations()
485 std::vector<String> ManagerNames;
486 for (std::list< ManagerBase* >::iterator Iter=this->ManagerList.begin(); Iter!=this->ManagerList.end(); ++Iter )
488 if(!(*Iter)->IsInitialized())
490 ManagerNames.push_back( (*Iter)->GetInterfaceTypeAsString() );
494 if(ManagerNames.empty())
499 if(1 == ManagerNames.size())
501 ExceptionStream <<
"Manager: ";
502 ExceptionStream << ManagerNames.at(0);
503 ExceptionStream <<
"is not initialized. All managers need to be initiailzed when entering the main loop.";
505 ExceptionStream <<
"Managers: ";
506 for( std::vector<String>::iterator Iter = ManagerNames.begin() ; Iter != ManagerNames.end() ; ++Iter )
508 ExceptionStream << (*Iter) <<
", ";
510 ExceptionStream <<
"are not initialized. All managers need to be initiailzed when entering the main loop.";
512 MEZZ_EXCEPTION(Exception::INVALID_STATE_EXCEPTION,ExceptionStream.str());
519 Entresol::~Entresol()
521 DestroyAllManagers();
522 DestroyAllManagerFactories();
533 void Entresol::PauseWorld(
bool Pause)
535 this->GetPhysicsManager()->PauseSimulation(Pause);
536 this->GetSceneManager()->PauseAllParticles(Pause);
542 void Entresol::LogString(
const String& Message)
546 { this->GetLogStream() << Message; }
555 { MEZZ_EXCEPTION(Exception::PARAMETERS_RANGE_EXCEPTION,
"Could not access thread Specific Logger from invalid thread."); }
559 {
return this->Aggregator; }
565 void Entresol::EngineInit(
const bool &CallMainLoop )
567 for (std::list< ManagerBase* >::iterator Iter=this->ManagerList.begin(); Iter!=this->ManagerList.end(); ++Iter )
570 InitStream <<
"Initializing " << (*Iter)->GetInterfaceTypeAsString() <<
"." << endl;
571 this->Log(InitStream.str());
572 if((*Iter)->GetInterfaceType() != ManagerBase::MT_GraphicsManager)
574 (*Iter)->Initialize();
577 Graphics::GraphicsManager::GetSingletonPtr()->Initialize();
590 {
return this->WorkScheduler; }
592 void Entresol::MainLoop()
594 this->PreMainLoopInit();
596 while(!ManualLoopBreak)
602 void Entresol::PreMainLoopInit()
604 VerifyManagerInitializations();
605 this->GetPhysicsManager()->MainLoopInitialize();
606 this->GetAreaEffectManager()->MainLoopInitialize();
609 void Entresol::DoOneFrame()
612 WorkScheduler.GetLog() <<
"<FrameCounterStart Frame=\"" << WorkScheduler.GetFrameCount() <<
"\" Time=\"" <<
GetTimeStamp()<<
"\" />" << endl;
614 WorkScheduler.RunAllMonopolies();
615 WorkScheduler.CreateThreads();
616 WorkScheduler.RunMainThreadWork();
617 WorkScheduler.JoinAllThreads();
618 WorkScheduler.ResetAllWorkUnits();
620 WorkScheduler.GetLog() <<
"<FrameCounterPrePause Frame=\"" << WorkScheduler.GetFrameCount() <<
"\" Time=\"" <<
GetTimeStamp()<<
"\" />" << endl;
622 WorkScheduler.WaitUntilNextFrame();
624 WorkScheduler.GetLog() <<
"<FrameCounterEnd Frame=\"" << WorkScheduler.GetFrameCount() <<
"\" Time=\"" <<
GetTimeStamp()<<
"\" />" << endl;
628 void Entresol::BreakMainLoop(Boolean Break)
632 while(!ManualLoopBreak)
635 while(ManualLoopBreak)
640 Whole Entresol::GetFrameCount()
const
641 {
return WorkScheduler.GetFrameCount(); }
647 void Entresol::SetTargetFrameRate(
const Whole NewFrameRate)
648 { this->SetTargetFrameTimeMicroseconds(
Real(1000000) /
Real(NewFrameRate) ); }
650 void Entresol::SetTargetFrameTimeMilliseconds(
const Whole NewTargetTime)
651 { this->SetTargetFrameTimeMicroseconds( NewTargetTime * 1000 ); }
653 void Entresol::SetTargetFrameTimeMicroseconds(
const Whole NewTargetTime)
654 { WorkScheduler.SetFrameLength(NewTargetTime); }
656 Whole Entresol::GetTargetFrameTimeMilliseconds()
const
657 {
return WorkScheduler.GetFrameLength()/1000; }
659 Whole Entresol::GetTargetFrameTimeMicroseconds()
const
660 {
return WorkScheduler.GetFrameLength(); }
662 Whole Entresol::GetLastFrameTimeMilliseconds()
const
663 {
return WorkScheduler.GetLastFrameTime()/1000; }
665 Whole Entresol::GetLastFrameTimeMicroseconds()
const
666 {
return WorkScheduler.GetLastFrameTime(); }
673 this->ManagerFactories.insert(std::pair<String,ManagerFactory*>(ToBeAdded->
GetManagerTypeName(),ToBeAdded));
681 void Entresol::RemoveManagerFactory(
const String& ImplName)
683 ManagerFactoryIterator ManIt = this->ManagerFactories.find(ImplName);
684 if( ManIt != this->ManagerFactories.end() )
685 { this->ManagerFactories.erase(ManIt); }
693 void Entresol::DestroyManagerFactory(
const String& ImplName)
695 ManagerFactoryIterator ManIt = this->ManagerFactories.find(ImplName);
696 if( ManIt != this->ManagerFactories.end() ) {
697 delete ManIt->second;
698 this->ManagerFactories.erase(ManIt);
702 void Entresol::DestroyAllManagerFactories()
704 for( ManagerFactoryIterator ManIt = this->ManagerFactories.begin() ; ManIt != this->ManagerFactories.end() ; ++ManIt )
705 {
delete (*ManIt).second; }
706 this->ManagerFactories.clear();
709 void Entresol::AddAllEngineDefaultManagerFactories()
711 ManagerFactoryIterator ManIt;
713 ManIt = this->ManagerFactories.find(
"DefaultActorManager");
716 ManIt = this->ManagerFactories.find(
"DefaultAreaEffectManager");
719 ManIt = this->ManagerFactories.find(
"DefaultCameraManager");
722 ManIt = this->ManagerFactories.find(
"DefaultCollisionShapeManager");
725 ManIt = this->ManagerFactories.find(
"DefaultDebrisManager");
728 ManIt = this->ManagerFactories.find(
"DefaultEventManager");
731 ManIt = this->ManagerFactories.find(
"DefaultGraphicsManager");
734 ManIt = this->ManagerFactories.find(
"DefaultInputManager");
737 ManIt = this->ManagerFactories.find(
"DefaultMeshManager");
740 ManIt = this->ManagerFactories.find(
"DefaultNetworkManager");
741 if( ManIt == this->ManagerFactories.end() ) this->AddManagerFactory(
new DefaultNetworkManagerFactory());
743 ManIt = this->ManagerFactories.find(
"DefaultPhysicsManager");
746 ManIt = this->ManagerFactories.find(
"DefaultResourceManager");
749 ManIt = this->ManagerFactories.find(
"DefaultSceneManager");
752 ManIt = this->ManagerFactories.find(
"DefaultTerrainManager");
755 ManIt = this->ManagerFactories.find(
"DefaultUIManager");
758 #ifdef ENABLE_OALS_AUDIO_IMPLEMENTATION
760 ManIt = this->ManagerFactories.find(
"OALSAudioManager");
761 if( ManIt == this->ManagerFactories.end() ) this->AddManagerFactory(
new Audio::OALS::OALSAudioManagerFactory());
763 ManIt = this->ManagerFactories.find(
"OALSSoundScapeManager");
764 if( ManIt == this->ManagerFactories.end() ) this->AddManagerFactory(
new Audio::OALS::OALSSoundScapeManagerFactory());
765 #endif //ENABLE_OALS_AUDIO_IMPLEMENTATION
773 ManagerFactoryIterator ManIt = this->ManagerFactories.find(ManagerImplName);
774 if( ManIt == this->ManagerFactories.end() )
776 MEZZ_EXCEPTION(Exception::II_IDENTITY_NOT_FOUND_EXCEPTION,
"Attempting to create manager of type \"" + ManagerImplName +
"\", which has no factory registered.");
778 ManagerBase* NewMan = (*ManIt).second->CreateManager(Params);
780 this->AddManager(NewMan);
786 ManagerFactoryIterator ManIt = this->ManagerFactories.find(ManagerImplName);
787 if( ManIt == this->ManagerFactories.end() )
789 MEZZ_EXCEPTION(Exception::II_IDENTITY_NOT_FOUND_EXCEPTION,
"Attempting to create manager of type \"" + ManagerImplName +
"\", which has no factory registered.");
791 ManagerBase* NewMan = (*ManIt).second->CreateManager(XMLNode);
793 this->AddManager(NewMan);
800 if( ManIt == this->ManagerFactories.end() )
802 MEZZ_EXCEPTION(Exception::II_IDENTITY_NOT_FOUND_EXCEPTION,
"Attempting to destroy manager of type \"" + ToBeDestroyed->
GetImplementationTypeName() +
"\", which has no factory registered.");
804 this->RemoveManager(ToBeDestroyed);
805 (*ManIt).second->DestroyManager(ToBeDestroyed);
808 void Entresol::DestroyAllManagers()
826 while( !(this->ManagerList.empty()) )
834 if( ManIt == this->ManagerFactories.end() ) {
835 MEZZ_EXCEPTION(Exception::II_IDENTITY_NOT_FOUND_EXCEPTION,
"Attempting to destroy manager of type \"" + Current->
GetImplementationTypeName() +
"\", which has no factory registered.");
837 (*ManIt).second->DestroyManager(Current);
840 this->ManagerList.pop_front();
850 for( std::list< ManagerBase* >::iterator ManIter = this->ManagerList.begin() ; ManIter != this->ManagerList.end() ; ++ManIter )
852 if( (*ManIter) == ManagerToAdd )
855 this->ManagerList.push_back(ManagerToAdd);
860 for(std::list< ManagerBase* >::iterator ManIter = this->ManagerList.begin(); ManIter!=this->ManagerList.end(); ++ManIter )
862 if( (*ManIter)->GetInterfaceType() == RetrieveType )
864 if( 0 == WhichOne )
return *ManIter;
873 for( std::list< ManagerBase* >::iterator ManIter = this->ManagerList.begin() ; ManIter != this->ManagerList.end() ; ++ManIter )
875 if( *ManIter == ManagerToRemove )
877 this->ManagerList.erase(ManIter);
885 for(std::list< ManagerBase* >::iterator ManIter = this->ManagerList.begin(); ManIter!=this->ManagerList.end(); ++ManIter )
887 if( (*ManIter)->GetInterfaceType() == ManagersToRemoveType )
891 this->ManagerList.erase(ManIter);
902 return dynamic_cast<ActorManager*
>( this->GetManager(ManagerBase::MT_ActorManager, WhichOne) );
907 return dynamic_cast<AreaEffectManager*
>( this->GetManager(ManagerBase::MT_AreaEffectManager, WhichOne) );
912 return dynamic_cast<Audio::AudioManager*
>( this->GetManager(ManagerBase::MT_AudioManager, WhichOne) );
927 return dynamic_cast<DebrisManager*
>( this->GetManager(ManagerBase::MT_DebrisManager, WhichOne) );
932 return dynamic_cast<EventManager*
>( this->GetManager(ManagerBase::MT_EventManager, WhichOne) );
942 return dynamic_cast<Input::InputManager*
>( this->GetManager(ManagerBase::MT_InputManager, WhichOne) );
947 return dynamic_cast<Graphics::MeshManager*
>( this->GetManager(ManagerBase::MT_MeshManager, WhichOne) );
950 NetworkManager* Entresol::GetNetworkManager(
const UInt16 WhichOne)
952 return dynamic_cast<NetworkManager*
>( this->GetManager(ManagerBase::MT_NetworkManager, WhichOne) );
972 return dynamic_cast<ResourceManager*
>( this->GetManager(ManagerBase::MT_ResourceManager, WhichOne) );
977 return dynamic_cast<UI::UIManager*
>( this->GetManager(ManagerBase::MT_UIManager, WhichOne) );