00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __MOUSESENSOR_H__
00030 #define __MOUSESENSOR_H__
00031
00032
00033 #include "X3DSensorNode.h"
00034 #include <list>
00035 #include <GL/glew.h>
00036 #ifdef MACOSX
00037 #include <GLUT/glut.h>
00038 #else
00039 #include <GL/glut.h>
00040 #endif
00041 #include "SFVec2f.h"
00042
00043
00044 namespace H3D {
00045
00054 class H3DAPI_API MouseSensor : public X3DSensorNode {
00055 public:
00056
00058 MouseSensor( Inst< SFBool > _enabled = 0,
00059 Inst< SFNode > _metadata = 0,
00060 Inst< SFBool > _isActive = 0,
00061 Inst< SFVec2f > _position = 0,
00062 Inst< SFBool > _leftButton = 0,
00063 Inst< SFBool > _middleButton = 0,
00064 Inst< SFBool > _rightButton = 0,
00065 Inst< SFVec2f > _motion = 0,
00066 Inst< SFBool > _scrollUp = 0,
00067 Inst< SFBool > _scrollDown = 0
00068 );
00069
00071 virtual ~MouseSensor();
00072
00075 void addGLUTMouseMotionAction( int x, int y );
00076
00082 virtual void addGLUTMouseButtonAction( int button, int state );
00083
00085 virtual void addGLUTMouseWheelAction( int wheel, int direction );
00086
00089 static void glutMouseCallback( int button, int state,
00090 int x, int y );
00091
00094 static void glutMotionCallback( int x, int y );
00095
00097 static void glutMouseWheelCallback( int wheel,
00098 int direction, int x, int y );
00099
00103 auto_ptr< SFVec2f> position;
00104
00108 auto_ptr< SFBool> leftButton;
00109
00113 auto_ptr< SFBool> middleButton;
00114
00118 auto_ptr< SFBool> rightButton;
00119
00123 auto_ptr< SFVec2f> motion;
00124
00129 auto_ptr< SFBool > scrollUp;
00130
00135 auto_ptr< SFBool > scrollDown;
00136
00138 static H3DNodeDatabase database;
00139
00140 private:
00141 static list< MouseSensor * > instances;
00142 };
00143 }
00144
00145 #endif