Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef GhostCameraManipulator_INCLUDE_ONCE
00033 #define GhostCameraManipulator_INCLUDE_ONCE
00034
00035 #include <vlGraphics/OpenGLContext.hpp>
00036
00037 namespace vl
00038 {
00039 class Camera;
00040
00041
00042
00055 class VLGRAPHICS_EXPORT GhostCameraManipulator: public UIEventListener
00056 {
00057 VL_INSTRUMENT_CLASS(vl::GhostCameraManipulator, UIEventListener)
00058
00059 public:
00061 GhostCameraManipulator();
00062
00063
00064
00065 virtual void mouseMoveEvent(int x, int y);
00066
00067 void enableEvent(bool enabled);
00068
00069 virtual void updateEvent();
00070
00071 virtual void initEvent() {}
00072
00073 virtual void destroyEvent() {}
00074
00075 virtual void addedListenerEvent(OpenGLContext*) {}
00076
00077 virtual void removedListenerEvent(OpenGLContext*) {}
00078
00079 virtual void mouseUpEvent(EMouseButton, int, int) {}
00080
00081 virtual void mouseDownEvent(EMouseButton, int, int) {}
00082
00083 virtual void mouseWheelEvent(int) {}
00084
00085 virtual void keyPressEvent(unsigned short, EKey) {}
00086
00087 virtual void keyReleaseEvent(unsigned short, EKey) {}
00088
00089 virtual void resizeEvent(int, int) {}
00090
00091 virtual void fileDroppedEvent(const std::vector<String>&) {}
00092
00093 virtual void visibilityEvent(bool) {}
00094
00095
00096
00098 void setCamera(Camera* camera);
00099
00101 Camera* camera();
00102
00104 const Camera* camera() const;
00105
00107 void setKeysForward(EKey key, EKey modifier = Key_None) { mKeysForward[0] = key; mKeysForward[1] = modifier; };
00108
00110 void setKeysBackward(EKey key, EKey modifier = Key_None) { mKeysBackward[0] = key; mKeysBackward[1] = modifier; };
00111
00113 void setKeysLeft(EKey key, EKey modifier = Key_None) { mKeysLeft[0] = key; mKeysLeft[1] = modifier; };
00114
00116 void setKeysRight(EKey key, EKey modifier = Key_None) { mKeysRight[0] = key; mKeysRight[1] = modifier; };
00117
00119 void setKeysUp(EKey key, EKey modifier = Key_None) { mKeysUp[0] = key; mKeysUp[1] = modifier; };
00120
00122 void setKeysDown(EKey key, EKey modifier = Key_None) { mKeysDown[0] = key; mKeysDown[1] = modifier; };
00123
00125 void setRotationSpeed(real speed) { mRotationSpeed = speed; }
00126
00128 real rotationSpeed() const { return mRotationSpeed; }
00129
00131 void setMovementSpeed(real speed) { mMovementSpeed = speed; }
00132
00134 real movementSpeed() const { return mMovementSpeed; }
00135
00136 protected:
00137 void setPosition(vec3 position) { mPosition = position; }
00138
00139 const vec3& position() const { return mPosition; }
00140
00141 void setXDegrees(real degree) { mXDegrees = degree; }
00142
00143 real xDegrees() { return mXDegrees; }
00144
00145 void setYDegrees(real degree) { mYDegrees = degree; }
00146
00147 real yDegrees() { return mYDegrees; }
00148
00149 protected:
00150 ref<Camera> mCamera;
00151 vec3 mPosition;
00152 real mLastTime;
00153 real mRotationSpeed;
00154 real mMovementSpeed;
00155 real mXDegrees;
00156 real mYDegrees;
00157 EKey mKeysForward[2];
00158 EKey mKeysBackward[2];
00159 EKey mKeysUp[2];
00160 EKey mKeysDown[2];
00161 EKey mKeysLeft[2];
00162 EKey mKeysRight[2];
00163 };
00164 }
00165
00166 #endif