00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "manipmanager.h"
00013
00014 using namespace VRUT;
00015
00016
00017 ManipulatorManager::ManipulatorManager() : ServerBase<ManipulatorModule>(MANIP_MANAGER)
00018 {
00019 }
00020
00021
00022 ManipulatorManager::~ManipulatorManager()
00023 {
00024 }
00025
00026
00027 MODULE_ID ManipulatorManager::ManipulateCamera(SCENE_ID sceneID, NODE_ID cameraID, RENDER_WINDOW_ID windowID)
00028 {
00030 MODULE_ID moduleID = createModuleInstance();
00031 ManipulatorModule * module = getModule(moduleID);
00032 if (!module)
00033 return MODULE_ID_NONE;
00034 module->SetSceneMgr(KERNEL->sceneManager);
00035 ModuleHandle<ManipulatorModule>::StartModuleThread(module);
00036
00037 if (module && module->IsOfType(MODULE_TYPE_CAMERA))
00038 {
00039 Parameter::ParameterIdentificator pi = Parameter::ParameterIdentificator(module->GetName(), wxT("sceneID"), module->GetID());
00040 wxCommandEvent ev1 = Event::GET_EVT_PARAM_SET_DO(pi, ID_TO_STRING(sceneID));
00041 KERNEL->GetMessageSink()->PostEvent(ev1);
00043 wxCommandEvent evx1 = Event::GET_EVT_PARAM_SET(pi, ID_TO_STRING(sceneID));
00044 module->PostEvent(evx1, true);
00045
00046 pi.paramName = wxT("nodeID");
00047 wxCommandEvent ev2 = Event::GET_EVT_PARAM_SET_DO(pi, ID_TO_STRING(cameraID));
00048 KERNEL->GetMessageSink()->PostEvent(ev2);
00050 wxCommandEvent evx2 = Event::GET_EVT_PARAM_SET(pi, ID_TO_STRING(cameraID));
00051 module->PostEvent(evx2, true);
00052
00053 pi.paramName = wxT("windowID");
00054 wxCommandEvent ev3 = Event::GET_EVT_PARAM_SET_DO(pi, ID_TO_STRING(windowID));
00055 KERNEL->GetMessageSink()->PostEvent(ev3);
00057 wxCommandEvent evx3 = Event::GET_EVT_PARAM_SET(pi, ID_TO_STRING(windowID));
00058 module->PostEvent(evx3, true);
00059
00060 return moduleID;
00061 }
00062 else
00063 {
00064 releaseModule(moduleID);
00065 return MODULE_ID_NONE;
00066 }
00067 }
00068
00069
00070