FIX: Navigation not being confined to multiplayer playerRoot (case 1306361). #1443
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes 1306361 (FogBugz).
Description
When setting up a multiplayer UI using
MultiplayerEventEvent
, pointer input is confined to theplayerRoot
of each player. However, navigation input -- itself much more relevant to multiplayer input compared to pointer input -- is allowed to escape aplayerRoot
and thus makes it possible for one player to move onto the UI of another player.Changes made
The navigation mechanism built into uGUI's
Selectable
is not overridable or extensible. We thus cannot limit it to parts of the UI. Discussing this with @pcosgrave.This PR attempts a workaround by relying on the
CanvasGroup
mechanism that allows toggling theinteractable
property off for an entire hierarchy and thus allSelectable
objects in the hierarchy.Notes
CanvasGroup
is not a fast mechanism. The underlying implementation relies onBroadcastMessage
to reachSelectable
objects. Might be good enough as a stopgap but likely, we want a more lightweight mechanism to getSelectable
to only pick certain UI objects.Checklist
Before review:
Changed
,Fixed
,Added
sections.([case %number%](https://issuetracker.unity3d.com/issues/...))
.Area_CanDoX
,Area_CanDoX_EvenIfYIsTheCase
,Area_WhenIDoX_AndYHappens_ThisIsTheResult
.During merge:
NEW: ___
.FIX: ___
.DOCS: ___
.CHANGE: ___
.RELEASE: 1.1.0-preview.3
.