Phase 5 updates

Phase 5 · Slice 1 ·

The Input System

  • Unity.InputSystem, Tassix's own assembly with the package's name and namespaces, so scripts and asmdefs that use it compile unchanged (by name or by the package asmdef's GUID).
  • Devices: Keyboard (every key with Unity's names and numbers, anyKey, shift/ctrl/alt) and Mouse (position, delta and scroll reset each frame, buttons). Gamepad exists for scripts that check Gamepad.current, but none is connected yet.
    • The engine's keyboard and mouse read the window's input, or what MCP injects.
    • InputSystem.AddDevice, RemoveDevice and QueueStateEvent drive devices too.
  • Updates run at the start of each frame: deltas reset, the engine's input is read, then queued events apply in order. After each step, the enabled actions bound to the changed controls run their callbacks.
  • Actions, following a new input_system scenario recorded in Unity and matching it exactly:
    • Button: started and performed at the press point; stays Performed until it cancels on release.
    • Value: started and performed when actuated, performed on every change with Started in between, canceled at rest, and an initial state check on enable.
    • PassThrough: performed on every change.
    • Callback contexts carry the control that changed; a cancel's value is null.
    • Composites: 2DVector, 3DVector, 1DAxis, and modifier composites. Processors: invert, scale, clamp, normalize, deadzones.
    • InputActionMap, and InputActionAsset loaded from and saved to the .inputactions JSON.
    • The binding setup extensions, binding overrides, and InputActionReference/InputActionProperty.
  • PlayerInput:
    • SendMessages/BroadcastMessages send "On" plus the action name on performed, and on cancel for Value actions.
    • C# events and Unity events are supported too.
    • CoreModule gained SendMessage, BroadcastMessage and SendMessageUpwards.
  • Unity projects:
    • .inputactions files import with Unity's file IDs: the asset at xxh64("Type:MonoBehaviour-><root>0"), and each action's reference at its id's hash, plus the hidden "Map/Action" copy older scenes use.
    • Scenes load and save PlayerInput with the package's script GUID.
    • unity_import now covers a PlayerInput with an action asset and both kinds of reference.
  • Conformance runs start without the engine's keyboard and mouse, since Unity records in batch mode, which has neither. 28 scenarios pass.
  • An MCP e2e test drives a Coin Dash copy's PlayerInput and Keyboard.current with injected keys.
  • Not yet: interactions (Hold, Tap, MultiTap, SlowTap), interactive rebinding, gamepads and touch, control-scheme device pairing, and the UI input module.
  • Next: Animator and .controller import, uGUI, rendering (shadows, PBR closer to URP).