00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __RENDERMODULE_H__
00013 #define __RENDERMODULE_H__
00014
00015 #include "scenemodule.h"
00016
00017 namespace VRUT
00018 {
00019 class GLWindow;
00020
00022 class RenderModule : public SceneModule
00023 {
00024 protected:
00026 NODE_ID cameraID;
00028 Parameter::ParameterIdentificator cameraIDParamID;
00029
00031 virtual void processEvent(wxCommandEvent & evt)
00032 {
00033 SceneModule::processEvent(evt);
00034 switch (evt.GetEventType())
00035 {
00036 case Event::EVT_PARAM_SET:
00037 if (IS_PARAM(evt, cameraIDParamID))
00038 {
00039 UPDATE_PARAM_FROM_EVENT_ID(cameraIDParamID, cameraID, evt);
00040 wxCommandEvent updEvt = Event::GET_EVT_RENDER_UPDATE(GetSceneID());
00041 PostToKernel(updEvt);
00042 wxCommandEvent fitEvt = Event::GET_EVT_SCENE_CAM_FIT_NEAR_FAR(GetSceneID(), GetCameraID());
00043 PostToKernel(fitEvt);
00044 }
00045 break;
00046 default:
00047 break;
00048 }
00049 }
00050
00051 public:
00053 RenderModule(const MODULE_ID & _id, const wxString & _name, unsigned _type, EventHandler * msgSink)
00054 : SceneModule(_id, _name, (_type | MODULE_TYPE_RENDER), msgSink), cameraID(NODE_ID_NONE)
00055 {
00056 REGISTER_PARAM_GUI_TEXTCONTROL(cameraIDParamID, wxT("cameraID"), wxString::Format(wxT("%i"), NODE_ID_NONE), wxT("ID of camera to render."));
00057 }
00059 virtual ~RenderModule()
00060 {
00061 }
00062
00064 NODE_ID GetCameraID() const
00065 {
00066 return cameraID;
00067 }
00069 SCENE_ID GetSceneID() const
00070 {
00071 return sceneID;
00072 }
00074 virtual void Draw() = 0;
00077 virtual void Deinitialize() = 0;
00078 };
00079 };
00080
00081
00082 #endif