docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class DiscreteButtonControl

    A button that is considered pressed if the underlying state has a value in the specific range.

    Inheritance
    object
    InputControl
    InputControl<float>
    AxisControl
    ButtonControl
    DiscreteButtonControl
    Inherited Members
    ButtonControl.pressPoint
    ButtonControl.pressPointOrDefault
    ButtonControl.IsValueConsideredPressed(float)
    ButtonControl.isPressed
    ButtonControl.wasPressedThisFrame
    ButtonControl.wasReleasedThisFrame
    AxisControl.clamp
    AxisControl.clampMin
    AxisControl.clampMax
    AxisControl.clampConstant
    AxisControl.invert
    AxisControl.normalize
    AxisControl.normalizeMin
    AxisControl.normalizeMax
    AxisControl.normalizeZero
    AxisControl.scale
    AxisControl.scaleFactor
    AxisControl.Preprocess(float)
    AxisControl.CompareValue(void*, void*)
    AxisControl.EvaluateMagnitude(void*)
    AxisControl.CalculateOptimizedControlDataType()
    InputControl<float>.valueType
    InputControl<float>.valueSizeInBytes
    InputControl<float>.value
    InputControl<float>.ReadValue()
    InputControl<float>.ReadValueFromPreviousFrame()
    InputControl<float>.ReadDefaultValue()
    InputControl<float>.ReadValueFromState(void*)
    InputControl<float>.ReadValueFromStateWithCaching(void*)
    InputControl<float>.ReadUnprocessedValueFromStateWithCaching(void*)
    InputControl<float>.ReadUnprocessedValue()
    InputControl<float>.ReadValueFromStateAsObject(void*)
    InputControl<float>.ReadValueFromStateIntoBuffer(void*, void*, int)
    InputControl<float>.WriteValueFromBufferIntoState(void*, int, void*)
    InputControl<float>.WriteValueFromObjectIntoState(object, void*)
    InputControl<float>.ReadValueFromBufferAsObject(void*, int)
    InputControl<float>.ProcessValue(float)
    InputControl<float>.ProcessValue(ref float)
    InputControl.name
    InputControl.displayName
    InputControl.shortDisplayName
    InputControl.path
    InputControl.layout
    InputControl.variants
    InputControl.device
    InputControl.parent
    InputControl.children
    InputControl.usages
    InputControl.aliases
    InputControl.stateBlock
    InputControl.noisy
    InputControl.synthetic
    InputControl.this[string]
    InputControl.magnitude
    InputControl.ToString()
    InputControl.EvaluateMagnitude()
    InputControl.TryGetChildControl(string)
    InputControl.TryGetChildControl<TControl>(string)
    InputControl.GetChildControl(string)
    InputControl.GetChildControl<TControl>(string)
    InputControl.RefreshConfigurationIfNeeded()
    InputControl.RefreshConfiguration()
    InputControl.m_StateBlock
    InputControl.currentStatePtr
    InputControl.previousFrameStatePtr
    InputControl.defaultStatePtr
    InputControl.noiseMaskPtr
    InputControl.stateOffsetRelativeToDeviceRoot
    InputControl.optimizedControlDataType
    InputControl.ApplyParameterChanges()
    Namespace: UnityEngine.InputSystem.Controls
    Assembly: Unity.InputSystem.dll
    Syntax
    public class DiscreteButtonControl : ButtonControl
    Remarks

    This control is most useful for handling HID-style hat switches. Unlike DpadControl, which by default is stored as a bitfield of four bits that each represent a direction on the pad, these hat switches enumerate the possible directions that the switch can be moved in. For example, the value 1 could indicate that the switch is moved to the left whereas 3 could indicate it is moved up.

    [StructLayout(LayoutKind.Explicit, Size = 32)]
    internal struct DualShock4HIDInputReport : IInputStateTypeInfo
    {
        [FieldOffset(0)] public byte reportId;
    
    [InputControl(name = "dpad", format = "BIT", layout = "Dpad", sizeInBits = 4, defaultState = 8)]
    [InputControl(name = "dpad/up", format = "BIT", layout = "DiscreteButton", parameters = "minValue=7,maxValue=1,nullValue=8,wrapAtValue=7", bit = 0, sizeInBits = 4)]
    [InputControl(name = "dpad/right", format = "BIT", layout = "DiscreteButton", parameters = "minValue=1,maxValue=3", bit = 0, sizeInBits = 4)]
    [InputControl(name = "dpad/down", format = "BIT", layout = "DiscreteButton", parameters = "minValue=3,maxValue=5", bit = 0, sizeInBits = 4)]
    [InputControl(name = "dpad/left", format = "BIT", layout = "DiscreteButton", parameters = "minValue=5, maxValue=7", bit = 0, sizeInBits = 4)]
    [FieldOffset(5)] public byte buttons1;
    

    }

    Fields

    maxValue

    Value (inclusive) beyond which to stop considering the button to be pressed.

    Declaration
    public int maxValue
    Field Value
    Type Description
    int

    minValue

    Value (inclusive) at which to start considering the button to be pressed.

    Declaration
    public int minValue
    Field Value
    Type Description
    int
    Remarks

    minValue is allowed to be larger than maxValue. This indicates a setup where the value wraps around beyond minValue, skips nullValue, and then goes all the way up to maxValue.

    For example, if the underlying state represents a circular D-pad and enumerates its 9 possible positions (including null state) going clock-wise from 0 to 8 and with 1 indicating that the D-pad is pressed to the left, then 1, 2, and 8 would indicate that the "left" button is held on the D-pad. To set this up, set minValue to 8, maxValue to 2, and nullValue to 0 (the default).

    nullValue

    Value at which the button is considered to not be pressed. Usually zero. Some devices, however, use non-zero default states.

    Declaration
    public int nullValue
    Field Value
    Type Description
    int

    wrapAtValue

    Value (inclusive) at which the values cut off and wrap back around. Considered to not be set if equal to nullValue.

    Declaration
    public int wrapAtValue
    Field Value
    Type Description
    int
    Remarks

    This is useful if, for example, an enumeration has more bits than are used for "on" states of controls. For example, a bitfield of 4 bits where values 1-7 (i.e. 0001 to 0111) indicate "on" states of controls and value 8 indicating an "off" state. In that case, set nullValue to 8 and wrapAtValue to 7.

    writeMode

    Determines the behavior of WriteValueIntoState(float, void*). By default, attempting to write a DiscreteButtonControl will result in a NotSupportedException.

    Declaration
    public DiscreteButtonControl.WriteMode writeMode
    Field Value
    Type Description
    DiscreteButtonControl.WriteMode

    Methods

    FinishSetup()

    Perform final initialization tasks after the control hierarchy has been put into place.

    Declaration
    protected override void FinishSetup()
    Overrides
    AxisControl.FinishSetup()
    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>
    

    ReadUnprocessedValueFromState(void*)

    Declaration
    public override float ReadUnprocessedValueFromState(void* statePtr)
    Parameters
    Type Name Description
    void* statePtr
    Returns
    Type Description
    float
    Overrides
    AxisControl.ReadUnprocessedValueFromState(void*)

    WriteValueIntoState(float, void*)

    Declaration
    public override void WriteValueIntoState(float value, void* statePtr)
    Parameters
    Type Name Description
    float value
    void* statePtr
    Overrides
    AxisControl.WriteValueIntoState(float, void*)

    Extension Methods

    InputControlExtensions.CheckStateIsAtDefault(InputControl)
    InputControlExtensions.CheckStateIsAtDefault(InputControl, void*, void*)
    InputControlExtensions.CheckStateIsAtDefaultIgnoringNoise(InputControl)
    InputControlExtensions.CheckStateIsAtDefaultIgnoringNoise(InputControl, void*)
    InputControlExtensions.CompareState(InputControl, void*, void*)
    InputControlExtensions.CompareState(InputControl, void*, void*, void*)
    InputControlExtensions.CompareStateIgnoringNoise(InputControl, void*)
    InputControlExtensions.FindControlsRecursive<TControl>(InputControl, IList<TControl>, Func<TControl, bool>)
    InputControlExtensions.FindInParentChain<TControl>(InputControl)
    InputControlExtensions.GetStatePtrFromStateEvent(InputControl, InputEventPtr)
    InputControlExtensions.HasValueChangeInEvent(InputControl, InputEventPtr)
    InputControlExtensions.HasValueChangeInState(InputControl, void*)
    InputControlExtensions.IsActuated(InputControl, float)
    InputControlExtensions.IsPressed(InputControl, float)
    InputControlExtensions.ReadDefaultValueAsObject(InputControl)
    InputControlExtensions.ReadValueAsObject(InputControl)
    InputControlExtensions.ReadValueFromEventAsObject(InputControl, InputEventPtr)
    InputControlExtensions.ReadValueIntoBuffer(InputControl, void*, int)
    InputControlExtensions.ResetToDefaultStateInEvent(InputControl, InputEventPtr)
    InputControlExtensions.WriteValueFromObjectIntoEvent(InputControl, InputEventPtr, object)
    InputControlExtensions.WriteValueIntoEvent<TValue>(InputControl, TValue, InputEventPtr)
    InputControlExtensions.WriteValueIntoState(InputControl, void*)
    InputControlExtensions.WriteValueIntoState<TValue>(InputControl, TValue, void*)
    InputControlExtensions.AccumulateValueInEvent(InputControl<float>, void*, InputEventPtr)
    InputControlExtensions.QueueValueChange<TValue>(InputControl<TValue>, TValue, double)
    InputControlExtensions.ReadUnprocessedValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr)
    InputControlExtensions.ReadUnprocessedValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr, out TValue)
    InputControlExtensions.ReadValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr)
    InputControlExtensions.ReadValueFromEvent<TValue>(InputControl<TValue>, InputEventPtr, out TValue)
    InputControlExtensions.WriteValueIntoEvent<TValue>(InputControl<TValue>, TValue, InputEventPtr)
    InputControlExtensions.WriteValueIntoState<TValue>(InputControl<TValue>, TValue, void*)
    InputControlExtensions.WriteValueIntoState<TValue>(InputControl<TValue>, void*)
    InputControlExtensions.WriteValueIntoState<TValue, TState>(InputControl<TValue>, TValue, ref TState)
    In This Article
    Back to top
    Copyright © 2024 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)