Class DualSenseGamepadHID
PS5 DualSense controller that is interfaced to a HID backend.
Inherited Members
Namespace: UnityEngine.InputSystem.DualShock
Assembly: Unity.InputSystem.dll
Syntax
public class DualSenseGamepadHID : DualShockGamepad, IDualShockHaptics, IDualMotorRumble, IHaptics, IInputStateCallbackReceiver
Properties
leftTriggerButton
Declaration
public ButtonControl leftTriggerButton { get; protected set; }
Property Value
Type | Description |
---|---|
ButtonControl |
playStationButton
Declaration
public ButtonControl playStationButton { get; protected set; }
Property Value
Type | Description |
---|---|
ButtonControl |
rightTriggerButton
Declaration
public ButtonControl rightTriggerButton { get; protected set; }
Property Value
Type | Description |
---|---|
ButtonControl |
Methods
FinishSetup()
Perform final initialization tasks after the control hierarchy has been put into place.
Declaration
protected override void FinishSetup()
Overrides
Remarks
This method can be overridden to perform control- or device-specific setup work. The most common use case is for looking up child controls and storing them in local getters.
public class MyDevice : InputDevice
{
public ButtonControl button { get; private set; }
public AxisControl axis { get; private set; }
protected override void OnFinishSetup()
{
// Cache controls in getters.
button = GetChildControl("button");
axis = GetChildControl("axis");
}
}</code></pre></example>
GetStateOffsetForEvent(InputControl, InputEventPtr, ref uint)
Compute an offset that correlates control
with the state in eventPtr
.
Declaration
public bool GetStateOffsetForEvent(InputControl control, InputEventPtr eventPtr, ref uint offset)
Parameters
Type | Name | Description |
---|---|---|
InputControl | control | Control the state of which we want to access within |
InputEventPtr | eventPtr | An input event. Must be a StateEvent or DeltaStateEvent |
uint | offset |
Returns
Type | Description |
---|---|
bool | False if the correlation failed or true if |
Remarks
This method will only be called if the given state event has a state format different than that of the device. In that case, the memory of the input state captured in the given state event cannot be trivially correlated with the control.
The input system calls the method to know which offset (if any) in the device's state block to consider the state
in eventPtr
relative to when accessing the state for control
as found in
the event.
An example of when this is called is for touch events. These are normally sent in TouchState format
which, however, is not the state format of Touchscreen (which uses a composite of several TouchStates).
When trying to access the state in eventPtr
to, for example, read out the touch position,
See Also
OnNextUpdate()
A new input update begins. This means that the current state of the device is being carried over into the next frame.
Declaration
public void OnNextUpdate()
Remarks
This is called without the front and back buffer for the device having been flipped. You can use Change(InputDevice, InputEventPtr, InputUpdateType) to write values into the device's state (e.g. to reset a given control to its default state) which will implicitly perform the buffer flip.
OnStateEvent(InputEventPtr)
A new state event has been received and is being processed.
Declaration
public void OnStateEvent(InputEventPtr eventPtr)
Parameters
Type | Name | Description |
---|---|---|
InputEventPtr | eventPtr | The state event. This will be either a StateEvent or a DeltaStateEvent. |
Remarks
Use Change(InputDevice, InputEventPtr, InputUpdateType) to write state updates into the device state buffers. While nothing will prevent a device from writing directly into the memory buffers retrieved with currentStatePtr, doing so will bypass the buffer flipping logic as well as change detection from change monitors (IInputStateChangeMonitor; this will cause InputAction to not work with the device) and thus lead to incorrect behavior.
See Also
PauseHaptics()
Pause rumble effects on the gamepad. Resume with ResumeHaptics().
Declaration
public override void PauseHaptics()
Overrides
See Also
ResetHaptics()
Reset rumble effects on the gamepad. Puts the gamepad rumble motors back into their default state.
Declaration
public override void ResetHaptics()
Overrides
See Also
ResumeHaptics()
Resume rumble affects on the gamepad that have been paused with PauseHaptics().
Declaration
public override void ResumeHaptics()
Overrides
See Also
SetLightBarColor(Color)
Set the color of the light bar on the back of the controller.
Declaration
public override void SetLightBarColor(Color color)
Parameters
Type | Name | Description |
---|---|---|
Color | color | Color to use for the light bar. Alpha component is ignored. Also, RBG values are clamped into [0..1] range. |
Overrides
SetMotorSpeeds(float, float)
Set the motor speeds of the low-frequency (usually on the left) and high-frequency (usually on the right) motors.
Declaration
public override void SetMotorSpeeds(float lowFrequency, float highFrequency)
Parameters
Type | Name | Description |
---|---|---|
float | lowFrequency | Speed of the low-frequency (left) motor. Normalized [0..1] value with 1 indicating maximum speed and 0 indicating the motor is turned off. Will automatically be clamped into range. |
float | highFrequency | Speed of the high-frequency (right) motor. Normalized [0..1] value with 1 indicating maximum speed and 0 indicating the motor is turned off. Will automatically be clamped into range. |
Overrides
Remarks
Note that hardware will put limits on the level of control you have over the motors. Rumbling the motors at maximum speed for an extended period of time may cause them to turn off for some time to prevent overheating. Also, how quickly the motors react and how often the speed can be updated will depend on the hardware and drivers.
SetMotorSpeedsAndLightBarColor(float?, float?, Color?)
Set motor speeds of both motors and the light bar color simultaneously.
Declaration
public bool SetMotorSpeedsAndLightBarColor(float? lowFrequency, float? highFrequency, Color? color)
Parameters
Type | Name | Description |
---|---|---|
float? | lowFrequency | |
float? | highFrequency | |
Color? | color |
Returns
Type | Description |
---|---|
bool | True if the command succeeded. Will return false if another command is currently being processed. |
Remarks
Use this method to set both the motor speeds and the light bar color in the same call. This method exists because it is currently not possible to process an input/output control (IOCTL) command while another one is in flight. For example, calling SetMotorSpeeds(float, float) immediately after calling SetLightBarColor(Color) might result in only the light bar color changing. The SetMotorSpeeds(float, float) call could fail. It is however possible to combine multiple IOCTL instructions into a single command, which is what this method does.
See SetMotorSpeeds(float, float) and SetLightBarColor(Color) for the respective documentation regarding setting rumble and light bar color.