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.