/* * JoystickNavigator.h * */ #ifndef _JoystickNavigator_h_ #define _JoystickNavigator_h_ #include "ygNavigator.h" #include #include #include #include #include #include #include #include #include #include #define NAME_LENGTH 128 #define JS_SELECT_UDELAY 25000 class JoystickNavigator : public ygNavigator { public: JoystickNavigator(const char* name,bool master=true); virtual void message(const ygMessage&); virtual void reset(void); virtual void app(void); void setSpeed(float); void setRotSpeed(float); void setAcceleration(float); void setFriction(float); void setRotAcceleration(float); void setCollide(bool val=true); void setFly(bool val=true); void teleportTo(const pfVec3&); void setHeading(float); void setButtonMapping(int,int); inline float speed(void) const { return transSpeed_; } inline float rotSpeed(void) const { return rotSpeed_; } private: float rotSpeed_, transSpeed_, acceleration_, maxSpeed_, friction_, collideRadius_; float rotMaxSpeed_,rotAcceleration_; bool collide_, fly_; int joystickX_, joystickY_; int fd_; int flags[16]; int buttonMapping[16]; pfVec3 prevCollidePos_; void checkCollision(void); bool positionOK(pfVec3 pos); void resetCollision(void); void checkGround(void); int mode; // 0=normal, 1=acceleration }; extern "C" ygNode* construct_JoystickNavigator(const char* name,bool master); #endif