Generated from ./.\Source/ with ROBODoc v4.0.18 on Tue Jul 14 15:31:31 2009

### TABLE OF CONTENTS

- Steering.Wheel.SDK/SteeringWheelSDK[1.00.002]
- Steering.Wheel.SDK/Wheel(ControllerInput*.controllerInput)
- Steering.Wheel.SDK/Update()
- Steering.Wheel.SDK/IsConnected(INT.index)
- Steering.Wheel.SDK/IsConnected(INT.index,DeviceType.deviceType)
- Steering.Wheel.SDK/IsConnected(INT.index,ManufacturerName.manufacturerName)
- Steering.Wheel.SDK/IsConnected(INT.index,ModelName.modelName)
- Steering.Wheel.SDK/GetState(INT.index)
- Steering.Wheel.SDK/GetFriendlyProductName(INT.index)
- Steering.Wheel.SDK/ButtonTriggered(INT.index,INT.buttonNbr)
- Steering.Wheel.SDK/ButtonReleased(INT.index,INT.buttonNbr)
- Steering.Wheel.SDK/ButtonIsPressed(INT.index,INT.buttonNbr)
- Steering.Wheel.SDK/SetPreferredControllerProperties(ControllerPropertiesData.properties)
- Steering.Wheel.SDK/GetCurrentControllerProperties(INT.index,ControllerPropertiesData&.properties)
- Steering.Wheel.SDK/GetShifterMode(INT.index)
- Steering.Wheel.SDK/PlayLeds(INT.index,FLOAT.currentRPM,FLOAT.rpmFirstLedTurnsOn,FLOAT.rpmRedLine)
- Steering.Wheel.SDK/HasForceFeedback(INT.index)
- Steering.Wheel.SDK/IsPlaying(INT.index,ForceType.forceType)
- Steering.Wheel.SDK/GenerateNonLinearValues(INT.index,INT.nonLinCoeff)
- Steering.Wheel.SDK/GetNonLinearValue(INT.index,INT.inputValue)
- Steering.Wheel.SDK/PlaySpringForce(INT.index,INT.offsetPercentage,INT.saturationPercentage,INT.coefficientPercentage)
- Steering.Wheel.SDK/StopSpringForce(INT.index)
- Steering.Wheel.SDK/PlayConstantForce(INT.index,INT.magnitudePercentage)
- Steering.Wheel.SDK/StopConstantForce(INT.index)
- Steering.Wheel.SDK/PlayDamperForce(INT.index,INT.coefficientPercentage)
- Steering.Wheel.SDK/StopDamperForce(INT.index)
- Steering.Wheel.SDK/PlaySideCollisionForce(INT.index,INT.magnitudePercentage)
- Steering.Wheel.SDK/PlayFrontalCollisionForce(INT.index,INT.magnitudePercentage)
- Steering.Wheel.SDK/PlayDirtRoadEffect(INT.index,INT.magnitudePercentage)
- Steering.Wheel.SDK/StopDirtRoadEffect(INT.index)
- Steering.Wheel.SDK/PlayBumpyRoadEffect(INT.index,INT.magnitudePercentage)
- Steering.Wheel.SDK/StopBumpyRoadEffect(INT.index)
- Steering.Wheel.SDK/PlaySlipperyRoadEffect(INT.index,INT.magnitudePercentage)
- Steering.Wheel.SDK/StopSlipperyRoadEffect(INT.index)
- Steering.Wheel.SDK/PlaySurfaceEffect(INT.index,PeriodicType.type,INT.magnitudePercentage,INT.period)
- Steering.Wheel.SDK/StopSurfaceEffect(INT.index)
- Steering.Wheel.SDK/PlayCarAirborne(INT.index)
- Steering.Wheel.SDK/StopCarAirborne(INT.index)
- Steering.Wheel.SDK/PlaySoftstopForce(INT.index,INT.usableRangePercentage)
- Steering.Wheel.SDK/StopSoftstopForce(INT.index)

## Steering.Wheel.SDK/SteeringWheelSDK[1.00.002]

NAME

       Steering Wheel SDK

COPYRIGHT

       The Logitech Steering Wheel SDK, including all accompanying
       documentation, is protected by intellectual property laws. All
       rights not expressly granted by Logitech are reserved.

PURPOSE

       The Steering Wheel SDK is an addition to Microsoft's DirectInput
       in DirectX. It is aimed at driving games and enables to
       dramatically shorten development time and improve implementation
       quality for various types of game controllers (USB/gameport
       wheels/joysticks/game pads, FF enabled or not). The Steering Wheel
       SDK has been developed and tested for wheels and joysticks using
       the Logitech, Microsoft and Immersion drivers. It also works with
       Logitech rumble pads (it has not been tested with non-Logitech
       rumble pads). By using the Steering Wheel SDK you have the
       guarantee that all wheels and joysticks will function
       flawlessly. No more situations where force feedback in a game
       behaves very differently from one wheel/joystick to another, which
       in turn results in user frustration and product returns. The
       Steering Wheel SDK comes with a very intuitive and easy to use
       interface which enables to read the wheel/joystick's axes and
       buttons, and also to create all the force feedback effects that
       are necessary for a good and complete implementation. See the
       following files to get started:
           - readme.txt: tells you how to get started.
           - SampleInGameImplementation.cpp: shows line by line how to
             use the Steering Wheel SDK's interface to do a complete
             implementation for PC game controllers in your driving
             game. The idea is to develop support for the steering
             wheel. But if a user plugs in a joystick or game pad he can
             play as well and get force feedback or rumble. If a joystick
             is plugged in, all forces generated by the Steering Wheel
             SDK will be played on the X axis and there will be a
             constant spring on the Y axis.
           - SteeringWheelSDK.cpp: demonstrates force feedback
             effects. Just compile, run and plug in a FF wheel, joystick
             or rumble pad. See usage at top of SteeringWheelSDK.cpp.
       For more details see DirectInput documentation which is part of
       Microsoft's DirectX.

AUTHOR

       Christophe Juncker (cj@wingmanteam.com)

## Steering.Wheel.SDK/Wheel(ControllerInput*.controllerInput)

NAME

      Wheel(ControllerInput* controllerInput) -- Does necessary
      initialization.

INPUTS

      controllerInput - handle to instance of Controller Input SDK.

SEE ALSO

      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see an
      example.

## Steering.Wheel.SDK/Update()

NAME

      VOID Wheel::Update() -- keeps forces and controller connections up
      to date.

NOTES

      Must be called every frame.

SEE ALSO

      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/IsConnected(INT.index)

NAME

      BOOL IsConnected(INT index) -- Check if a game controller is
      connected at the specified index.

INPUTS

      index - index of the game controller that we want to check.  Index
      0 corresponds to the first game controller connected. Index 1 to
      the second game controller.

RETURN VALUE

      TRUE if a PC wheel/joystick/game pad is connected, FALSE otherwise.

SEE ALSO

      IsConnected(INT.index,DeviceType.deviceType)
      IsConnected(INT.index,ManufacturerName.manufacturerName)
      IsConnected(INT.index,ModelName.modelName)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/IsConnected(INT.index,DeviceType.deviceType)

NAME

      BOOL IsConnected(INT index, DeviceType deviceType) -- Check if a
      game controller is connected at the specified index.

INPUTS

      index - index of the game controller that we want to check.  Index
      0 corresponds to the first game controller connected. Index 1 to
      the second game controller.

      deviceType - type of the device to check for.  Possible types are:
        - LG_DEVICE_TYPE_WHEEL
        - LG_DEVICE_TYPE_JOYSTICK
        - LG_DEVICE_TYPE_GAMEPAD

RETURN VALUE

      TRUE if a PC controller of specified type is connected, FALSE
      otherwise.

SEE ALSO

      IsConnected(INT.index)
      IsConnected(INT.index,ManufacturerName.manufacturerName)
      IsConnected(INT.index,ModelName.modelName)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/IsConnected(INT.index,ManufacturerName.manufacturerName)

NAME

      BOOL IsConnected(INT index, ManufacturerName manufacturerName) --
      Check if a game controller is connected at the specified index.

INPUTS

      index - index of the game controller that we want to check.  Index
      0 corresponds to the first game controller connected. Index 1 to
      the second game controller.

      manufacturerName - name of the manufacturer the device has been
      made by.  Possible names are:
        - LG_MANUFACTURER_LOGITECH
        - LG_MANUFACTURER_MICROSOFT
        - LG_MANUFACTURER_OTHER

RETURN VALUE

      TRUE if a PC controller of specified manufacturer is connected,
      FALSE otherwise.

SEE ALSO

      IsConnected(INT.index)
      IsConnected(INT.index,DeviceType.deviceType)
      IsConnected(INT.index,ModelName.modelName)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/IsConnected(INT.index,ModelName.modelName)

NAME

      BOOL IsConnected(INT index, ModelName modelName) -- Check if a game
      controller is connected at the specified index.

INPUTS

      index - index of the game controller that we want to check.  Index
      0 corresponds to the first game controller connected. Index 1 to
      the second game controller.

      modelName - name of the model of the device.  Possible models are:
        - LG_MODEL_G27
        - LG_MODEL_G25
        - LG_MODEL_MOMO_RACING
        - LG_MODEL_MOMO_FORCE
        - LG_MODEL_DRIVING_FORCE_PRO
        - LG_MODEL_DRIVING_FORCE
        - LG_MODEL_NASCAR_RACING_WHEEL
        - LG_MODEL_FORMULA_FORCE
        - LG_MODEL_FORMULA_FORCE_GP
        - LG_MODEL_FORCE_3D_PRO
        - LG_MODEL_EXTREME_3D_PRO
        - LG_MODEL_FREEDOM_24
        - LG_MODEL_ATTACK_3
        - LG_MODEL_FORCE_3D
        - LG_MODEL_STRIKE_FORCE_3D
        - LG_MODEL_RUMBLEPAD
        - LG_MODEL_RUMBLEPAD_2
        - LG_MODEL_CORDLESS_RUMBLEPAD_2
        - LG_MODEL_CORDLESS_GAMEPAD
        - LG_MODEL_DUAL_ACTION_GAMEPAD
        - LG_MODEL_PRECISION_GAMEPAD_2
        - LG_MODEL_CHILLSTREAM

RETURN VALUE

      TRUE if specific PC controller is connected, FALSE otherwise.

SEE ALSO

      IsConnected(INT.index)
      IsConnected(INT.index,DeviceType.deviceType)
      IsConnected(INT.index,ManufacturerName.manufacturerName)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/GetState(INT.index)

NAME

      DIJOYSTATE2* GetState(INT index) -- Get the state of the
      controller.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first game controller connected. Index 1 to the second game
      controller.

RETURN VALUE

      DIJOYSTATE2 structure containing the device's positional
      information for axes, POVs and buttons.

SEE ALSO

      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/GetFriendlyProductName(INT.index)

NAME

      LPCTSTR GetFriendlyProductName(INT index) -- Get the device's
      friendly product name.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first game controller connected. Index 1 to the second game
      controller.

RETURN VALUE

      Device friendly product name.

SEE ALSO

      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/ButtonTriggered(INT.index,INT.buttonNbr)

NAME

      BOOL ButtonTriggered(INT index, INT buttonNbr) -- Check if a
      certain button was triggered.

INPUTS

      index - index of the game controller that we want to check.  Index
      0 corresponds to the first game controller connected. Index 1 to
      the second game controller.

      buttonNbr - the number of the button that we want to
      check. Possible numbers are: 0 to 127.

RETURN VALUE

      TRUE if the button was triggered, FALSE otherwise.

SEE ALSO

      ButtonIsPressed(INT.index,INT.buttonNbr)
      ButtonReleased(INT.index,INT.buttonNbr)

## Steering.Wheel.SDK/ButtonReleased(INT.index,INT.buttonNbr)

NAME

      BOOL ButtonReleased(INT index, INT buttonNbr) -- Check if a certain
      button was released.

INPUTS

      index - index of the game controller that we want to check.  Index
      0 corresponds to the first game controller connected. Index 1 to
      the second game controller.

      buttonNbr - the number of the button that we want to
      check. Possible numbers are: 0 to 127.

RETURN VALUE

      TRUE if the button was released, FALSE otherwise.

SEE ALSO

      ButtonIsPressed(INT.index,INT.buttonNbr)
      ButtonTriggered(INT.index,INT.buttonNbr)

## Steering.Wheel.SDK/ButtonIsPressed(INT.index,INT.buttonNbr)

NAME

      BOOL ButtonIsPressed(INT index, INT buttonNbr) -- Check if a
      certain button is being pressed.

INPUTS

      index - index of the game controller that we want to check.  Index
      0 corresponds to the first game controller connected. Index 1 to
      the second game controller.

      buttonNbr - the number of the button that we want to
      check. Possible numbers are: 0 to 127.

RETURN VALUE

      TRUE if the button is being pressed, FALSE otherwise.

SEE ALSO

      ButtonReleased(INT.index,INT.buttonNbr)
      ButtonTriggered(INT.index,INT.buttonNbr)

## Steering.Wheel.SDK/SetPreferredControllerProperties(ControllerPropertiesData.properties)

NAME

      HRESULT SetPreferredControllerProperties(ControllerPropertiesData
      properties) -- set preferred wheel properties.

INPUTS

      properties - structure containing all the fields to be set.

RETURN VALUE

      E_INVALIDARG if argument is wrong (individual settings out of
      bounds).
      E_FAIL if Logitech Gaming Software is older than 5.03.
      S_OK otherwise.

NOTES

      This function merely sets the game's preference. The Steering Wheel
      SDK will attempt to set the wheel's settings when necessary.

SEE ALSO

      GetCurrentControllerProperties(INT.index,ControllerPropertiesData&.properties)
      GetShifterMode(INT.index)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/GetCurrentControllerProperties(INT.index,ControllerPropertiesData&.properties)

NAME

      BOOL GetCurrentControllerProperties(INT index,
      ControllerPropertiesData& properties) -- get current properties.

INPUTS

      index - index of the game controller.
      properties - structure to receive current properties.

RETURN VALUE

      TRUE if current value was received from Logitech driver.
      FALSE if function failed or current value is default value.

NOTES

      Function will fail and return default properties if user has older
      than 5.03 Logitech Gaming Software installed.

SEE ALSO

      SetPreferredControllerProperties(ControllerPropertiesData.properties)
      GetShifterMode(INT.index)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/GetShifterMode(INT.index)

NAME

      INT GetShifterMode(INT index) -- get current shifter mode (gated or
      sequential).

INPUTS

      index - index of the game controller.

RETURN VALUE

      1 if shifter is gated
      0 if shifter is sequential
      -1 if unknown

SEE ALSO

      SetPreferredControllerProperties(ControllerPropertiesData.properties)
      GetCurrentControllerProperties(INT.index,ControllerPropertiesData&.properties)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see an
      example.

## Steering.Wheel.SDK/PlayLeds(INT.index,FLOAT.currentRPM,FLOAT.rpmFirstLedTurnsOn,FLOAT.rpmRedLine)

NAME

      HRESULT PlayLeds(INT index, FLOAT currentRPM, FLOAT
      rpmFirstLedTurnsOn, FLOAT rpmRedLine) -- play LEDs on G27.

INPUTS

      index - index of the game controller.
      currentRPM - current RPM.
      rpmFirstLedTurnsOn - RPM when first LEDs are to turn on.
      rpmRedLine - just below this RPM, all LEDs will be on. Just above,
      all LEDs will start flashing.

SEE ALSO

      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/HasForceFeedback(INT.index)

NAME

      BOOL HasForceFeedback(INT index) -- Check if a game controller has
      force feedback.

INPUTS

      index - index of the game controller that we want to check.  Index
      0 corresponds to the first game controller connected. Index 1 to
      the second game controller.

RETURN VALUE

      TRUE if the specified device can do force feedback, FALSE
      otherwise.

## Steering.Wheel.SDK/IsPlaying(INT.index,ForceType.forceType)

NAME

      BOOL IsPlaying(INT index, ForceType forceType) -- check if a
      certain force effect is currently playing.

INPUTS

      index - index of the game controller that we want to check.  Index
      0 corresponds to the first game controller connected. Index 1 to
      the second game controller.

      forceType - the type of the force that we want to check to see if
      it is playing.  Possible types are:
        - LG_FORCE_SPRING
        - LG_FORCE_CONSTANT
        - LG_FORCE_DAMPER
        - LG_FORCE_SIDE_COLLISION
        - LG_FORCE_FRONTAL_COLLISION
        - LG_FORCE_DIRT_ROAD
        - LG_FORCE_BUMPY_ROAD
        - LG_FORCE_SLIPPERY_ROAD
        - LG_FORCE_SURFACE_EFFECT
        - LG_FORCE_CAR_AIRBORNE

RETURN VALUE

      TRUE if the force is playing, FALSE otherwise.

## Steering.Wheel.SDK/GenerateNonLinearValues(INT.index,INT.nonLinCoeff)

NAME

      HRESULT GenerateNonLinearValues(int index, int nonLinCoeff) --
      Generate non-linear values for the game controller's axis.

FUNCTION

      Gaming wheels/joysticks/game pads have very different behavior from
      real steering wheels. The reason for single-turn wheels is that
      they only do up to three quarters of a turn lock to lock, compared
      to about 3 turns for a real car.
      This directly affects the steering ratio (15:1 to 20:1 for a real
      car, but only 4:1 for a gaming wheel!). Joysticks and game pads
      have a much shorter range of movement than a real steering wheel as
      well.
      Because of this very short steering ratio or short range, the
      gaming wheel/joystick/game pad will feel highly sensitive which may
      make game play very difficult.
      Especially it may be difficult to drive in a straight line at speed
      (tendency to swerve back and forth).
      One way to get around this problem is to use a sensitivity
      curve. This is a curve that defines the sensitivity of the game
      controller depending on speed. This type of curve is usually used
      for game pads to make up for their low physical range. The result
      of applying such a curve is that at high speed the car's wheels
      will physically turn less than if the car is moving very slowly.
      For example the car's wheels may turn 60 degrees lock to lock at
      low speed but only 10 degrees lock to lock at higher speeds.  If
      you calculate the resulting steering ratio for 10 degrees lock to
      lock you find that if you use a steering wheel that turns 180
      degrees lock to lock the ratio is equal to 180/10 = 18, which
      corresponds to a real car's steering ratio.
      If the sensitivity curve has been implemented for the
      wheel/joystick, adding a non-linear curve probably is not
      necessary. But you may find that even after applying a sensitivity
      curve, the car still feels a little twitchy on a straight line when
      driving fast. This may be because in your game you need more than
      10 degrees lock to lock even at high speeds. Or maybe the car is
      moving at very high speeds where even a normal steering ratio is
      not good enough to eliminate high sensitivity.
      The best way at this point is to add a non-linear curve on top of
      the sensitivity curve.
      The effect of the non-linear curve with positive nonLinCoeff is
      that around center position the wheel/joystick will be less
      sensitive.  Yet at locked position left or right the car's wheels
      will turn the same amount of degrees as without the non-linear
      response curve.  Therefore the car will become more controllable on
      a straight line and game-play will be improved.
      There can sometimes be cases where the wheel does not feel
      sensitive enough. In that case it is possible to add a non-linear
      curve with the inverse effect (makes the steering more sensitive
      around center position) by using negative values for
      nonLinCoeff. This method lets you define a non-linearity
      coefficient which will determine how strongly non-linear the curve
      will be. When running the method it will generate a mapping table
      in the form of an array. For each of the 1024 entries in this array
      there will be a corresponding non-linear value which can be used as
      the wheel/joystick's axis position instead of the original
      value. See Sample_In-game_Implementation.cs for an example.

INPUTS

      index - index to which the concerned game controller is connected.
      Index 0 corresponds to the first game controller connected. Index 1
      to the second game controller.

      nonLinCoeff - value representing how much non-linearity should be
      applied. Range is -100 to 100. 0 = linear curve, 100 = maximum
      non-linear curve with less sensitivity around center, -100 =
      maximum non-linearity with more sensitivity around center position.

RETURN VALUE

      S_OK if successful, E_FAIL otherwise.

SEE ALSO

      GetNonLinearValue(INT.index,INT.inputValue)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/GetNonLinearValue(INT.index,INT.inputValue)

NAME

      INT GetNonLinearValue(INT index, INT inputValue) -- Get a
      non-linear value from a table previously generated. This can be
      used for the response of a steering wheel.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first game controller connected. Index 1 to the second game
      controller.

      inputValue - value between -32768 and 32767 corresponding to
      original value of an axis.

RETURN VALUE

      Value between -32768 and 32767 corresponding to the level of
      non-linearity previously set with GenerateNonLinearValues(...).

SEE ALSO

      GenerateNonLinearValues(INT.index,INT.nonLinCoeff)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see an
      example.

## Steering.Wheel.SDK/PlaySpringForce(INT.index,INT.offsetPercentage,INT.saturationPercentage,INT.coefficientPercentage)

NAME

      HRESULT PlaySpringForce(INT index, INT offsetPercentage, INT
      saturationPercentage, INT coefficientPercentage) -- Play the spring
      force.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

      offsetPercentage - Specifies the center of the spring force effect.
      Valid range is -100 to 100. Specifying 0 centers the spring. Any
      values outside this range are silently clamped.

      saturationPercentage - Specify the level of saturation of the
      spring force effect. The saturation stays constant after a certain
      deflection from the center of the spring. It is comparable to a
      magnitude.  Valid ranges are 0 to 100. Any value higher than 100 is
      silently clamped.

      coefficientPercentage - Specify the slope of the effect strength
      increase relative to the amount of deflection from the center of
      the condition.  Higher values mean that the saturation level is
      reached sooner.  Valid ranges are -100 to 100. Any value outside
      the valid range is silently clamped.

NOTES

      The dynamic spring force gets played on the X axis. If a joystick
      is connected, all forces generated by the Steering Wheel SDK will be
      played on the X axis. And in addition there will be a constant
      spring on the Y axis.

SEE ALSO

      StopSpringForce(INT.index)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/StopSpringForce(INT.index)

NAME

      HRESULT StopSpringForce(INT index) -- Stop the spring force.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

SEE ALSO

      PlaySpringForce(INT.index,INT.offsetPercentage,INT.saturationPercentage,INT.coefficientPercentage)

## Steering.Wheel.SDK/PlayConstantForce(INT.index,INT.magnitudePercentage)

NAME

      HRESULT PlayConstantForce(INT index, INT magnitudePercentage) --
      Play the constant force.

FUNCTION

      A constant force works best when continuously updated with a value
      tied to the physics engine.
      Tie the steering wheel/joystick to the car's physics engine via a
      vector force. This will create a centering spring effect, a sliding
      effect, a feeling for the car's inertia, and depending on the
      physics engine it should also give side collisions (wheel/joystick
      jerks in the opposite way of the wall the car just touched).
      The vector force could for example be calculated from the lateral
      force measured at the front tires. This vector force should be 0
      when at a stop or driving straight. When driving through a turn or
      when driving on a banked surface the vector force should have a
      magnitude that grows in a proportional way.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

      magnitudePercentage - Specifies the magnitude of the constant force
      effect. A negative value reverses the direction of the force.
      Valid ranges for magnitudePercentage are -100 to 100. Any values
      outside the valid range are silently clamped.

SEE ALSO

      StopConstantForce(INT.index)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/StopConstantForce(INT.index)

NAME

      HRESULT StopConstantForce(INT index) -- stop the constant force.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

SEE ALSO

      PlayConstantForce(INT.index,INT.magnitudePercentage)

## Steering.Wheel.SDK/PlayDamperForce(INT.index,INT.coefficientPercentage)

NAME

      HRESULT PlayDamperForce(INT index, INT coefficientPercentage) --
      Play the damper force.

FUNCTION

      Simulate surfaces that are hard to turn on (mud, car at a stop) or
      slippery surfaces (snow, ice).

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

      coefficientPercentage - specify the slope of the effect strength
      increase relative to the amount of deflection from the center of
      the condition.  Higher values mean that the saturation level is
      reached sooner.  Valid ranges are -100 to 100. Any value outside
      the valid range is silently clamped. -100 simulates a very slippery
      effect, +100 makes the wheel/joystick very hard to move, simulating
      the car at a stop or in mud.

SEE ALSO

      StopDamperForce(INT.index)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/StopDamperForce(INT.index)

NAME

      HRESULT StopDamperForce(INT index) -- stop the damper force.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

SEE ALSO

      PlayDamperForce(INT.index,INT.coefficientPercentage)

## Steering.Wheel.SDK/PlaySideCollisionForce(INT.index,INT.magnitudePercentage)

NAME

      HRESULT PlaySideCollisionForce(INT index, INT magnitudePercentage)
      -- play a side collision force.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

      magnitudePercentage - Specifies the magnitude of the side collision
      force effect. A negative value reverses the direction of the force.
      Valid ranges for magnitudePercentage are -100 to 100. Any values
      outside the valid range are silently clamped.

NOTES

      If you are already using a constant force tied to a vector force
      from the physics engine, then you may not need to add side
      collisions since depending on your physics engine the side
      collisions may automatically be taken care of by the constant
      force.

## Steering.Wheel.SDK/PlayFrontalCollisionForce(INT.index,INT.magnitudePercentage)

NAME

      HRESULT PlayFrontalCollisionForce(INT index, INT
      magnitudePercentage) -- Play a frontal collision force.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

      magnitudePercentage - specifies the magnitude of the frontal
      collision force effect.  Valid ranges for magnitudePercentage are 0
      to 100. Values higher than 100 are silently clamped.

SEE ALSO

      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/PlayDirtRoadEffect(INT.index,INT.magnitudePercentage)

NAME

      HRESULT PlayDirtRoadEffect(INT index, INT magnitudePercentage) --
      Play a surface effect that feels like driving on a dirt road.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

      magnitudePercentage - Specifies the magnitude of the dirt road
      effect.  Valid ranges for magnitudePercentage are 0 to 100. Values
      higher than 100 are silently clamped.

SEE ALSO

      StopDirtRoadEffect(INT.index)
      PlaySurfaceEffect(INT.index,PeriodicType.type,INT.magnitude,INT.period)

## Steering.Wheel.SDK/StopDirtRoadEffect(INT.index)

NAME

      HRESULT StopDirtRoadEffect(INT index) -- stop the dirt road effect.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

SEE ALSO

      PlayDirtRoadEffect(INT.index,INT.magnitudePercentage)

## Steering.Wheel.SDK/PlayBumpyRoadEffect(INT.index,INT.magnitudePercentage)

NAME

      HRESULT PlayBumpyRoadEffect(INT index, INT magnitudePercentage) --
      Play a surface effect that feels like driving on a bumpy road (like
      on cobblestones for example).

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

      magnitudePercentage - Specifies the magnitude of the bumpy road
      effect.  Valid ranges for magnitudePercentage are 0 to 100. Values
      higher than 100 are silently clamped.

SEE ALSO

      StopBumpyRoadEffect(INT.index)
      PlaySurfaceEffect(INT.index,PeriodicType.type,INT.magnitudePercentage,INT.period)

## Steering.Wheel.SDK/StopBumpyRoadEffect(INT.index)

NAME

      HRESULT StopBumpyRoadEffect(INT index) -- stop the bumpy road
      effect.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

SEE ALSO

      PlayBumpyRoadEffect(INT.index,INT.magnitudePercentage)

## Steering.Wheel.SDK/PlaySlipperyRoadEffect(INT.index,INT.magnitudePercentage)

NAME

      HRESULT PlaySlipperyRoadEffect(INT index, INT magnitudePercentage)
      -- Play a slippery road effect (snow, ice).

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

      magnitudePercentage - Specifies the magnitude of the slippery road
      effect.  Valid ranges for magnitudePercentage are 0 to 100. 100
      corresponds to the most slippery effect.

SEE ALSO

      StopSlipperyRoadEffect(INT.index)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/StopSlipperyRoadEffect(INT.index)

NAME

      HRESULT StopSlipperyRoadEffect(INT index) -- stop the slippery road
      effect.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

SEE ALSO

      PlaySlipperyRoadEffect(INT.index,INT.magnitudePercentage)

## Steering.Wheel.SDK/PlaySurfaceEffect(INT.index,PeriodicType.type,INT.magnitudePercentage,INT.period)

NAME

      HRESULT PlaySurfaceEffect(INT index, PeriodicType type, INT
      magnitudePercentage, INT period) -- play any type of rumble to
      simulate surface effects.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

      type - Specifies the type of force effect. Can be one of the
      following values:
        - PeriodicType.LG_TYPE_SINE
        - PeriodicType.LG_TYPE_SQUARE

      magnitudePercentage - Specifies the magnitude of the surface
      effect.  Valid ranges for magnitudePercentage are 0 to 100. Values
      higher than 100 are silently clamped.

      period - Specifies the period of the periodic force effect. The
      value is the duration for one full cycle of the periodic function
      measured in milliseconds. A good range of values for the period is
      20 ms (sand) to 120 ms (wooden bridge or cobblestones). For a
      surface effect the period should not be any bigger than 150 ms.

SEE ALSO

      StopSurfaceEffect(INT.index)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/StopSurfaceEffect(INT.index)

NAME

      HRESULT StopSurfaceEffect(INT index) -- stop the surface effect.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

SEE ALSO

      PlaySurfaceEffect(INT.index,PeriodicType.type,INT.magnitudePercentage,INT.period)

## Steering.Wheel.SDK/PlayCarAirborne(INT.index)

NAME

      HRESULT PlayCarAirborne(INT index) -- play an effect that simulates
      a car that is airborne or where the front wheels do not touch the
      ground.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

SEE ALSO

      StopCarAirborne(INT.index)
      SampleInGameImplementation.cpp or SteeringWheelSDKDemo.cpp to see
      an example.

## Steering.Wheel.SDK/StopCarAirborne(INT.index)

NAME

      HRESULT StopCarAirborne(INT index) -- stop the car airborne effect
      and resume any forces that were playing before the car was
      airborne.

INPUTS

      index - index of the game controller.  Index 0 corresponds to the
      first wheel/joystick connected. Index 1 to the second
      wheel/joystick.

SEE ALSO

      PlayCarAirborne(INT.index)

## Steering.Wheel.SDK/PlaySoftstopForce(INT.index,INT.usableRangePercentage)

NAME

      HRESULT PlaySoftstopForce(INT index, INT usableRangePercentage) --
      Play a spring force that acts like a soft stop in order to limit a
      wheel's range.

INPUTS

      index - index of the game controller.

      usableRangePercentage - Specifies the deadband in percentage of the
      softstop force effect.

SEE ALSO

      StopSoftstopForce(INT.index)

## Steering.Wheel.SDK/StopSoftstopForce(INT.index)

NAME

      HRESULT StopSoftstopForce(INT index) -- stop the "softstop" spring
      force.

INPUTS

      index - index of the game controller.

SEE ALSO

      PlaySoftstopForce(INT.index,INT.usableRangePercentage)