Search Unity

0.9.3-preview now available

Discussion in 'New Input System' started by dougpunity3d, Aug 15, 2019.

  1. dougpunity3d

    dougpunity3d

    Unity Technologies

    Joined:
    Jul 11, 2018
    Posts:
    16
    ## [0.9.3-preview] - 2019-8-15
    ### Fixed
    - `XInputController` and `XboxOneGamepad` no longer have two extraneous, non-functional "menu" and "view" buttons.
    - Fixed `InputUser.onUnpairedDeviceUser` ignoring input on controls that do not support `EvaluateMagnitude`.
    * This led to situations, for example, where `PlayerInput` would not initialize a control scheme switch from a `<Mouse>/delta` binding as the delta X and Y axes do not have min&max limits and thus return -1 from `EvaluateMagnitude`.
    - Fixed available processor list not updated right away when changing the action type in the Input Action editor window.
    #### Actions
    - `NullReferenceException` when the input debugger is open with actions being enabled.
    - When selecting a device to add to a control scheme, can now select devices with specific usages, too (e.g. "LeftHand" XRController).
    ### Changed
    - Removed `timesliceEvents` setting - and made this tied to the update mode instead. We now always time slice when using fixed updates, and not when using dynamic updates.
    - When adding a composite, only ones compatible with the value type of the current action are shown. This will, for example, no longer display a `2D Vector` composite as an option on a floating-point button action.
    - The `InputState.onChange` callback now receives a second argument which is the event (if any) that triggered the state change on the device.
    ### Added
    - `InputSystemUIInputModule` can now track multiple pointing devices separately, to allow multi-touch input - required to allow control of multiple On-Scree controls at the same time with different fingers.
    - Two new composite bindings have been added.
    * `ButtonWithOneModifier` can be used to represent shortcut-like bindings such as "CTRL+1".
    * `ButtonWithTwoModifiers` can be used to represent shortcut-like bindings such as "CTRL+SHIFT+1".
     
  2. recursive

    recursive

    Joined:
    Jul 12, 2012
    Posts:
    621
    @dougpunity3d - Will time slicing occur if we manually Update?
     
    BenouKat likes this.
  3. Sonorpearl

    Sonorpearl

    Joined:
    Sep 8, 2017
    Posts:
    32
    Hey @dougpunity3d, since I´ve Updated from 0.9.1-preview to 0.9.3 I´m getting the following errors:
    Code (CSharp):
    1. Pointer actions should be pass-through actions, so the UI can properly distinguish multiple pointing devices/fingers. Please set the action type of 'RightClick' to 'Pass-Through'.
    2. UnityEngine.InputSystem.LowLevel.<>c__DisplayClass7_0:<set_onUpdate>b__0(NativeInputUpdateType, NativeInputEventBuffer*)
    That is also the case for the ScreenWheel action. I´m currently using 2019.2.1f1 and updating the Input System manually.
     
  4. BenouKat

    BenouKat

    Joined:
    Feb 29, 2012
    Posts:
    218
    I'm not the dev of this system but I don't really see how they can "timeslice" a manual event since it's very specific to fixed frame. That's why they remove it on Dynamic Update, it's because it doesn't make sense (there's only one update per frame, no need to timeslice), I think.

    By calling Update to the Input System manually, there's nothing to "slice".

    At least, I think this is the reason.
     
  5. Rene-Damm

    Rene-Damm

    Unity Technologies

    Joined:
    Sep 15, 2012
    Posts:
    862
    Oops, turns out we missed a change here to the default actions. Should be fixed in next package.

    In general, all the pointer-related input actions need to have their action type set to "Pass-Through" for them to work correctly when sourcing input from multiple pointing devices. When using the default UI actions we set up, this should automatically be taken care of (but due to the oversight above was not in this case).

    Yup, that was our thinking.

    What's the use case @recursive you're looking at? We couldn't come up with a convincing reason to treat manual updates differently from dynamic updates here (that's kind of the general take the system has on manual) but could be we simply overlooked something here.
     
  6. recursive

    recursive

    Joined:
    Jul 12, 2012
    Posts:
    621
    I'm manually updating the Input System then my own Input ECS systems immediately afterwards on FixedUpdate, as the current ECS processing stuff runs on update. They'll be fixing this later, but I'm using a variation on a script on the forums for this.

    I suppose the other option is to modify the PlayerLoop to run my input systems after the new InputSystem FixedUpdate, but that's a bit more complicated and I went with the simple option.

    It may not be relevant once the custom Sim World and update timing stuff for ECS is in.