float Joystick::getAxis(int index, int axis) { if (!verifyJoystick(index)) return 0; if (axis >= getNumAxes(index)) return 0; return clampval(((float)SDL_JoystickGetAxis(joysticks[index], axis))/32768.0f); }
int Joystick::getAxes(lua_State * L) { love::luax_assert_argc(L, 1, 1); int index = (int)lua_tointeger(L, 1) - 1; if (!verifyJoystick(index)) return 0; int num = getNumAxes(index); for (int i = 0; i<num; i++) lua_pushnumber(L, clampval(((float)SDL_JoystickGetAxis(joysticks[index], i))/32768.0f)); return num; }
void T_TX_InterfaceSerial::getRawData (float *dest)/*{{{*/ { // Read serial data and update rawData[] readSerialData (); int numAxes=getNumAxes (); if (numAxes > TX_MAXAXIS) { numAxes = TX_MAXAXIS; } for (int i = 0; i < numAxes; ++i) { *(dest + i) = rawData[i]; } }
bool Joystick::connect() { if (joystickId < 0 || joystickId >= SdlWrap::getNumJoysticks()) return false; sdlJoystick = SDL_JoystickOpen(joystickId); if (sdlJoystick == NULL) { connected = false; return connected; } SDL_JoystickUpdate(); axes.clear(); axesZero.clear(); buttons.clear(); numAxes = getNumAxes(); numButtons = getNumButtons(); for (int i = 0; i < numAxes; i++) { axes.append(0); } for (int i = 0; i < numAxes; i++) { int threshold = 5000; qint16 axisOffset = SDL_JoystickGetAxis(sdlJoystick, i); if (axisOffset < threshold && axisOffset > -threshold) { axesZero.append(-axisOffset); } else { axesZero.append(0); } } for (int i = 0; i < numButtons; i++) { ButtonState state; state.lastState = false; state.currentState = false; buttons.append(state); } connected = true; return connected; }
bool SdlJoystick::init() { #if SDL_VERSION_ATLEAST(1,3,0) SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC); #else SDL_Init(SDL_INIT_JOYSTICK); #endif if (mDeviceNumber >= SDL_NumJoysticks()) { vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL) << clrOutBOLD(clrRED, "ERROR") << ": Added for joystick number " << mDeviceNumber << " but there are only " << SDL_NumJoysticks() << " joysticks.\n" << vprDEBUG_FLUSH; return false; } mJoystick = SDL_JoystickOpen(mDeviceNumber); if (!mJoystick) { vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL) << "ERROR: Failed to open joystick " << mDeviceNumber << ": " << SDL_GetError(); return false; } mButtons.resize(SDL_JoystickNumButtons(mJoystick), gadget::DigitalState::OFF); mAxes.resize(SDL_JoystickNumAxes(mJoystick), 0.0f); gadget::Digital::addDigitalSample(mButtons); gadget::Analog::addAnalogSample(mAxes); cout << "Found Joystick " << mDeviceNumber << ": " << SDL_JoystickName(mDeviceNumber) << endl << " Axis: " << mAxes.size() << endl << " Buttons: " << mButtons.size() << endl << " Hats: " << SDL_JoystickNumHats(mJoystick) << " (Unused)" << endl << " Balls: " << SDL_JoystickNumBalls(mJoystick) << " (Unused)" << endl #if SDL_VERSION_ATLEAST(1,3,0) << " Haptics: " << (SDL_JoystickIsHaptic(mJoystick) ? "YES" : "NO") #else << " Haptics: Not supported by SDL 1.2" #endif << endl; #if SDL_VERSION_ATLEAST(1,3,0) if (SDL_JoystickIsHaptic(mJoystick)) { mHaptic = SDL_HapticOpenFromJoystick(mJoystick); if (!mHaptic) { vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CRITICAL_LVL) << "ERROR: Failed to initialize haptics on " << mDeviceNumber << ": " << SDL_GetError(); return true; } unsigned int cap = getCapabilities(); cout << " Loaded Effects: " << getMaxStoredEffects() << endl << " Played Effects: " << getMaxPlayingEffects() << endl << " Axes Count: " << getNumAxes() << endl << " Support for:"; if (cap & RumbleEffect::CONSTANT) cout << " constant"; if (cap & RumbleEffect::SINE) cout << " sine"; if (cap & RumbleEffect::SQUARE) cout << " square"; if (cap & RumbleEffect::TRIANGLE) cout << " triangle"; if (cap & RumbleEffect::SAWTOOTHUP) cout << " saw-tooth-up"; if (cap & RumbleEffect::SAWTOOTHDOWN) cout << " saw-tooth-down"; if (cap & RumbleEffect::RAMP) cout << " ramp"; if (cap & RumbleEffect::SPRING) cout << " spring"; if (cap & RumbleEffect::DAMPER) cout << " damper"; if (cap & RumbleEffect::INERTIA) cout << " inertia"; if (cap & RumbleEffect::FRICTION) cout << " friction"; if (cap & RumbleEffect::CUSTOM) cout << " custom"; if (cap & RumbleEffect::GAIN) cout << " gain"; if (cap & RumbleEffect::AUTOCENTER) cout << " auto-center"; if (cap & RumbleEffect::STATUS) cout << " status"; if (cap & RumbleEffect::PAUSE) cout << " pause"; cout << endl; } #endif mInitialized = true; return true; }
void PhysicsAMotorJoint::changed(ConstFieldMaskArg whichField, UInt32 origin, BitVector details) { //Do not respond to changes that have a Sync origin if(origin & ChangedOrigin::Sync) { return; } if(whichField & WorldFieldMask) { if(_JointID) { dJointDestroy(_JointID); _JointID = dJointCreateAMotor(getWorld()->getWorldID(), 0); } else { _JointID = dJointCreateAMotor(getWorld()->getWorldID(), 0); if(!(whichField & VelFieldMask)) { setVel(dJointGetAMotorParam(_JointID,dParamVel)); } if(!(whichField & FMaxFieldMask)) { setFMax(dJointGetAMotorParam(_JointID,dParamFMax)); } if(!(whichField & FudgeFactorFieldMask)) { setFudgeFactor(dJointGetAMotorParam(_JointID,dParamFudgeFactor)); } if(!(whichField & Vel2FieldMask)) { setVel2(dJointGetAMotorParam(_JointID,dParamVel2)); } if(!(whichField & FMax2FieldMask)) { setFMax2(dJointGetAMotorParam(_JointID,dParamFMax2)); } if(!(whichField & FudgeFactor2FieldMask)) { setFudgeFactor2(dJointGetAMotorParam(_JointID,dParamFudgeFactor2)); } if(!(whichField & Vel3FieldMask)) { setVel3(dJointGetAMotorParam(_JointID,dParamVel3)); } if(!(whichField & FMax3FieldMask)) { setFMax3(dJointGetAMotorParam(_JointID,dParamFMax3)); } if(!(whichField & FudgeFactor3FieldMask)) { setFudgeFactor3(dJointGetAMotorParam(_JointID,dParamFudgeFactor3)); } if(!(whichField & HiStopFieldMask)) { setHiStop(dJointGetAMotorParam(_JointID,dParamHiStop)); } if(!(whichField & LoStopFieldMask)) { setLoStop(dJointGetAMotorParam(_JointID,dParamLoStop)); } if(!(whichField & BounceFieldMask)) { setBounce(dJointGetAMotorParam(_JointID,dParamBounce)); } if(!(whichField & CFMFieldMask)) { setCFM(dJointGetAMotorParam(_JointID,dParamCFM)); } if(!(whichField & StopCFMFieldMask)) { setStopCFM(dJointGetAMotorParam(_JointID,dParamStopCFM)); } if(!(whichField & StopERPFieldMask)) { setStopERP(dJointGetAMotorParam(_JointID,dParamStopERP)); } if(!(whichField & HiStop2FieldMask)) { setHiStop2(dJointGetAMotorParam(_JointID,dParamHiStop2)); } if(!(whichField & LoStop2FieldMask)) { setLoStop2(dJointGetAMotorParam(_JointID,dParamLoStop2)); } if(!(whichField & Bounce2FieldMask)) { setBounce2(dJointGetAMotorParam(_JointID,dParamBounce2)); } if(!(whichField & CFM2FieldMask)) { setCFM2(dJointGetAMotorParam(_JointID,dParamCFM2)); } if(!(whichField & StopCFM2FieldMask)) { setStopCFM2(dJointGetAMotorParam(_JointID,dParamStopCFM2)); } if(!(whichField & StopERP2FieldMask)) { setStopERP2(dJointGetAMotorParam(_JointID,dParamStopERP2)); } if(!(whichField & HiStop3FieldMask)) { setHiStop3(dJointGetAMotorParam(_JointID,dParamHiStop3)); } if(!(whichField & LoStop3FieldMask)) { setLoStop3(dJointGetAMotorParam(_JointID,dParamLoStop3)); } if(!(whichField & Bounce3FieldMask)) { setBounce3(dJointGetAMotorParam(_JointID,dParamBounce3)); } if(!(whichField & CFM3FieldMask)) { setCFM3(dJointGetAMotorParam(_JointID,dParamCFM3)); } if(!(whichField & StopCFM3FieldMask)) { setStopCFM3(dJointGetAMotorParam(_JointID,dParamStopCFM3)); } if(!(whichField & StopERP3FieldMask)) { setStopERP3(dJointGetAMotorParam(_JointID,dParamStopERP3)); } } } Inherited::changed(whichField, origin, details); if((whichField & NumAxesFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorNumAxes(_JointID,getNumAxes()); } if((whichField & Axis1FieldMask) || (whichField & Axis1ReferenceFrameFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorAxis(_JointID,0, getAxis1ReferenceFrame(), getAxis1().x(), getAxis1().y(), getAxis1().z()); } if((whichField & Axis2FieldMask) || (whichField & Axis2ReferenceFrameFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorAxis(_JointID,1, getAxis2ReferenceFrame(), getAxis2().x(), getAxis2().y(), getAxis2().z()); } if((whichField & Axis3FieldMask) || (whichField & Axis3ReferenceFrameFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorAxis(_JointID,2, getAxis3ReferenceFrame(), getAxis3().x(), getAxis3().y(), getAxis3().z()); } if((whichField & VelFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamVel, getVel()); } if((whichField & FMaxFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamFMax, getFMax()); } if((whichField & FudgeFactorFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamFudgeFactor, getFudgeFactor()); } if((whichField & Vel2FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamVel2, getVel2()); } if((whichField & FMax2FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamFMax2, getFMax2()); } if((whichField & FudgeFactor2FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamFudgeFactor2, getFudgeFactor2()); } if((whichField & Vel3FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamVel3, getVel3()); } if((whichField & FMax3FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamFMax3, getFMax3()); } if((whichField & FudgeFactor3FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamFudgeFactor3, getFudgeFactor3()); } if((whichField & HiStopFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamHiStop, getHiStop()); } if((whichField & LoStopFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamLoStop, getLoStop()); } if((whichField & BounceFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamBounce, getBounce()); } if((whichField & CFMFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamCFM, getCFM()); } if((whichField & StopERPFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamStopERP, getStopERP()); } if((whichField & StopCFMFieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamStopCFM, getStopCFM()); } if((whichField & HiStop2FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamHiStop2, getHiStop2()); } if((whichField & LoStop2FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamLoStop2, getLoStop2()); } if((whichField & Bounce2FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamBounce2, getBounce2()); } if((whichField & CFM2FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamCFM2, getCFM2()); } if((whichField & StopERP2FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamStopERP2, getStopERP2()); } if((whichField & StopCFM2FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamStopCFM2, getStopCFM2()); } if((whichField & HiStop3FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamHiStop3, getHiStop3()); } if((whichField & LoStop3FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamLoStop3, getLoStop3()); } if((whichField & Bounce3FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamBounce3, getBounce3()); } if((whichField & CFM3FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamCFM3, getCFM3()); } if((whichField & StopERP3FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamStopERP3, getStopERP3()); } if((whichField & StopCFM3FieldMask) || (whichField & WorldFieldMask)) { dJointSetAMotorParam(_JointID, dParamStopCFM3, getStopCFM3()); } }