00001 #ifndef __MountedCameraController__
00002 #define __MountedCameraController__
00003 
00004 #include "ICameraController.h"
00005 #include "OSGCanvas.h"
00006 #include "util.h"
00007 #include "math.h"
00008 
00009 
00010 #define VIEWPOINTDISTANCE 100
00011 
00012 
00031 class MountedCameraController : public ICameraController {
00032 public:
00033         
00034         enum {
00035                 STANDBY,
00036                 ROTATION, 
00037                 PANNING, 
00038                 ZOOM
00039         };
00040 
00041     MountedCameraController(ICameraManipulator* cameraManipulator, OSGCanvas* canvas);
00042 
00043 
00044     ICameraManipulator* getCameraManipulator();
00045     void setCameraManipulator(ICameraManipulator* cameraManipulator);
00046 
00047 
00048     void enable(int x, int y);
00049     void disable();
00050 
00051     bool isEnabled();
00052 
00053     void onMouseLeftUp(int x, int y);
00054         void onMouseLeftDown(int x, int y);
00055 
00056     void onMouseMiddleUp(int x, int y);
00057         void onMouseMiddleDown(int x, int y);
00058 
00059         void onMouseRightUp(int x, int y);
00060         void onMouseRightDown(int x, int y);
00061 
00062         void onMouseMove(int x, int y);
00063         void onMouseWheel(int x, int y, int d);
00064 
00065         void onKeyDown(int key);
00066         void onKeyUp(int key);
00067 
00068 protected:
00069 
00070         void setState(int state, int x, int y);
00071 
00072 
00073         int      _mouseX, 
00074                  _mouseY;
00075         int _state;
00076     
00077         bool _enabled;
00078 
00079     ICameraManipulator* _cameraManipulator;
00080     OSGCanvas* _canvas;
00081 };
00082 
00083 #endif