00001 /* 00002 * $Id: iomanager.cpp 383 2008-10-16 23:37:01Z kybav1 $ 00003 * 00004 * Description : One line description of file. 00005 * Author : Vaclav Kyba <mail/Jabber: vaseo1@gmail.com> <ICQ: 98576293> 00006 * 00007 * Purpose : 00008 * Long description of what the file is for. 00009 */ 00010 00011 00012 #include "generalmanager.h" 00013 #include "scenemodule.h" 00014 #include "kernelmodule.h" 00015 00016 00017 using namespace VRUT; 00018 00019 00020 GeneralManager::GeneralManager() : ServerBase<Module>(GENERAL_MANAGER, GENERAL_INSTANCE_OFFSET) 00021 { 00022 } 00023 00024 00025 GeneralManager::~GeneralManager() 00026 { 00027 } 00028 00029 00030 size_t GeneralManager::AddAvailableModules(const wxString & pathToModules) 00031 { 00032 size_t count = ServerBase<Module>::AddAvailableModules(pathToModules); 00033 wxDir dir(pathToModules); 00034 wxString dirName; 00035 bool ok = dir.GetFirst(&dirName, wxEmptyString, wxDIR_DIRS); 00036 while (ok) 00037 { 00038 count += ServerBase<Module>::AddAvailableModules(pathToModules + wxT("/") + dirName); 00039 ok = dir.GetNext(&dirName); 00040 } 00041 00042 return count; 00043 } 00044 00045 00046 MODULE_ID GeneralManager::RunModule(const wxString & moduleName) 00047 { 00049 MODULE_ID moduleID = createModuleInstance(moduleName); 00050 Module * module = getModule(moduleID); 00051 if (!module) 00052 { 00053 LOGERROR(wxString::Format(wxT("<GeneralManager>Module '%s' could not be started"), moduleName.c_str())); 00054 return MODULE_ID_NONE; 00055 } 00057 if (module->IsOfType(MODULE_TYPE_SCENE)) 00058 ((SceneModule *)module)->SetSceneMgr(KERNEL->sceneManager); 00060 if (module->IsOfType(MODULE_TYPE_KERNEL)) 00061 { 00062 ((KernelModule *)module)->SetKernel(KERNEL); 00063 KERNEL->GetMessageSink()->RegisterKernelModule(moduleID); 00064 } 00065 ModuleHandle<Module>::StartModuleThread(module); 00066 00067 return moduleID; 00068 }
1.5.5