Phase 6 updates

Phase 6 · Slice 54 ·

Joysticks and XR controllers

  • Joystick as Unity's base layout: trigger (PrimaryTrigger|PrimaryAction|Submit) and stick (Primary2DMotion); hatswitch and twist are null, as they come with specific joysticks' layouts. current and all.
  • TrackedDevice (trackingState, isTracked, devicePosition, deviceRotation) and XR.XRController (leftHand and rightHand: the controllers with that device usage), XRControllerWithRumble; Vector3Control and QuaternionControl (all zeros until reported, as Unity's). The buttons and axes of specific controllers (Primary2DAxis, trigger...) come from layouts Unity builds per headset, which aren't modeled.
  • Device usages: InputSystem.SetDeviceUsage, AddDeviceUsage, RemoveDeviceUsage (actions re-resolve; UsageChanged notifies), and paths whose device part names usages (<XRController>{LeftHand}/devicePosition). CommonUsages. InternedString converts from string explicitly, as Unity's (so SetDeviceUsage(device, null) picks the string overload).
  • StickControl's children in Unity's order (up, x, y, down, left, right); a control's layout drops only a trailing "Control" from its type (XRController stays XRController).
  • DefaultInputActions' joystick and XR bindings use usages, as Unity's.
  • Checked by joystick_xr, recorded in Unity 6000.3 (exact).
  • Next: reading real joysticks; URP render features; humanoid avatars and retargeting.