00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __CAMERA_MODULE_H__
00013 #define __CAMERA_MODULE_H__
00014
00015 #include "manipmodule.h"
00016 #include "camera.h"
00017
00018
00019 namespace VRUT
00020 {
00022 class CameraModule : public ManipulatorModule
00023 {
00024 protected:
00026 RENDER_WINDOW_ID windowID;
00028 Parameter::ParameterIdentificator windowIDParamID;
00029
00031 virtual void processEvent(wxCommandEvent & evt)
00032 {
00033 ManipulatorModule::processEvent(evt);
00034 switch (evt.GetEventType())
00035 {
00036 case Event::EVT_PARAM_SET:
00037 UPDATE_PARAM_FROM_EVENT_ID(windowIDParamID, windowID, evt);
00038 break;
00039 case Event::EVT_RENDER_WIN_CLOSED:
00040 if (evt.GetId() == int(windowID))
00041 {
00043 wxCommandEvent ev = Event::GET_EVT_MODULE_RELEASE(GetID());
00044 PostToKernel(ev);
00045 }
00046 break;
00047 case Event::EVT_IO_SCENE_IMPORT_DONE:
00048 case Event::EVT_RENDER_CACHE_STOP:
00049 if (evt.GetId() == int(getSceneID()))
00050 {
00051 wxCommandEvent ev = Event::GET_EVT_SCENE_CAM_FIT(getSceneID(), getCameraID());
00052 PostToKernel(ev);
00053 wxCommandEvent ev2 = Event::GET_EVT_RENDER_UPDATE(getSceneID());
00054 PostToKernel(ev2);
00055 }
00056 break;
00057 default:
00058 break;
00059 }
00060 }
00062 NODE_ID getCameraID() const
00063 {
00064 return nodeID;
00065 }
00067 SCENE_ID getSceneID() const
00068 {
00069 return sceneID;
00070 }
00071
00072 public:
00074 CameraModule(const MODULE_ID & _id, const wxString & _name, unsigned _type, EventHandler * msgSink)
00075 : ManipulatorModule(_id, _name, (_type | MODULE_TYPE_CAMERA), msgSink)
00076 {
00077 windowID = RENDER_WINDOW_ID_NONE;
00078 REGISTER_PARAM_GUI_TEXTCONTROL(windowIDParamID, wxT("windowID"), wxString::Format(wxT("%i"), NODE_ID_NONE), wxT("ID of renderer window."));
00079 REGISTER_LISTENER(Event::EVT_RENDER_WIN_CLOSED);
00080 REGISTER_LISTENER(Event::EVT_RENDER_CACHE_STOP);
00081 REGISTER_LISTENER(Event::EVT_IO_SCENE_IMPORT_DONE);
00082 }
00084 virtual ~CameraModule() {}
00085 };
00086 };
00087
00088 #endif