Skip to content

Advanced API Integration

Owned analog selector navigation

See Lobby and Existing Canvas for normal authored navigation. This advanced API is useful for custom selector presenters.

InputNavigationGate converts one input owner's Vector2 callbacks into intentional selector steps. Create one gate per route, feed both performed and canceled callbacks into Read, and poll Repeat with the same monotonic time source. Dispose/reset the gate when its route is released. The character-selection lobby template and standalone persistent selector use unscaled Unity time.

Default InputNavigationSettings:

  • Activation threshold: 0.6 on the dominant axis.
  • Release threshold: 0.3; hysteresis prevents noise from generating new steps.
  • Initial repeat delay: 0.35 seconds.
  • Repeat interval: 0.16 seconds, with at most one step per poll.

Crossing activation generates one immediate step. Center release rearms it. A clear direction reversal generates an immediate new step; a partial reversal cancels repetition in the old direction. Repeated analog callbacks do not themselves advance the selector. Keyboard and D-pad input retain immediate discrete behavior without these repeat timers.

IsAnalog recognizes sticks, including joystick sticks, and excludes keyboard keys and D-pad controls. Settings are exposed on each presenter integration; timer/latch state is owned by each session route, never by PlayerIndex or a global controller.

Public integration map

Need API / guide
Read authoritative players and session identity CouchCoopBootstrap.GameplayPlayers: Sessions and Identity
Bind existing objects or resolve a customer provider GameplayPlayerSetup: Gameplay Integration
Spawn selected characters and provide placement Representation and spawning
Supply custom gameplay actions IGameplayInputAdapter: Gameplay Input
Store or migrate input binding profiles Input and Rebinding
Manage camera ownership, providers and layouts Shared and Split Screen
Handle reserved input, Drop Out and Rejoin Session Lifecycle

Read the ownership and initialization caveats before integrating callbacks. Session PlayerIndex is a reusable seat; it is not a save identity for character definitions, physical controllers or input binding profiles.