00001
00010 #ifndef DEV2DTODEV6D_H
00011 #define DEV2DTODEV6D_H
00012
00013
00014 #define OUTSIDE_GLUE_CORE
00015 #include <fsa/fsa.H>
00016 #include <dev/buttons.H>
00017 #include <dev/dev2d.H>
00018 #include <dev/room6d.H>
00019 #include <config/config.H>
00020 #include <mlib/points.H>
00021
00022 namespace InSpace {
00023
00024 class Dev2dToDev6d : public Interactor<Dev2dToDev6d>
00025 {
00026 public:
00027
00028 Dev2dToDev6d(str_ptr dev2d, str_ptr z_button, str_ptr rotx_button,
00029 str_ptr roty_button, str_ptr rotz_button, str_ptr dev6d,
00030 int clampPosToRoom);
00031 virtual ~Dev2dToDev6d();
00032
00033 protected:
00034
00035 int outsideRoom(Wpt p);
00036
00037 void motion(cEVENT2dptr &evt, STATE* &next);
00038 void z_on(cEVENTbtnptr &evt, STATE *&);
00039 void z_off(cEVENTbtnptr &evt, STATE *&);
00040 void z_motion(cEVENT2dptr &evt, STATE* &next);
00041 void rotx(cEVENTbtnptr &evt, STATE *&);
00042 void roty(cEVENTbtnptr &evt, STATE *&);
00043 void rotz(cEVENTbtnptr &evt, STATE *&);
00044
00045 EVENT2dptr _dev2d;
00046 EVENTbtnptr _zbtnon;
00047 EVENTbtnptr _zbtnoff;
00048 EVENTbtnptr _rotx;
00049 EVENTbtnptr _roty;
00050 EVENTbtnptr _rotz;
00051
00052 STATE _changeZ;
00053
00054 DEVice_room6d *_tracker;
00055 Wtransf _trans, _rot;
00056 int _clamp;
00057 double _rotangle;
00058
00059 };
00060
00061 }
00062
00063 #endif