UI controls in MultiplayerEventSystems should not change colour unexpectedly #1547
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.
Jira
Issue Tracker
Description
This fixes an issue where UI controls would change colour when using MultiplayerEventSystems. The bug was caused by this previous fix (#1443) that attempted to keep user navigation from jumping between different player UIs in local multiplayer games, which worked by making sure all UI controls were inside CanvasGroup controls, one for each player UI, and toggling the CanvasGroup interactable property between true and false, depending on what UI was currently updating. Unfortunately toggling the interactable property makes all child UI controls animate between active and disabled states, which changes their colour when transitions have been set.
Changes made
This fix moves the logic to keep navigation inside a players UI to the InputSystemUIInputModule component, and reverts the previous CanvasGroup related changes to MultiplayerEventSystem. A 'localMultiPlayerRoot' property has been added that can be set when running a local multiplayer game and when executing the Move action, we first speculatively perform the navigation and disallow that move (don't execute the move event) if the target Selectable is outside the player root.
Notes
With this change, InputSystemUIInputModule takes a reference to UnityEngine.UI, which I think should be ok.
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
.