#if PACKAGE_DOCS_GENERATION || UNITY_INPUT_SYSTEM_ENABLE_UI using UnityEngine; using UnityEngine.EventSystems; namespace UnityEngine.InputSystem.UI { /// /// A modified EventSystem class, which allows multiple players to have their own instances of a UI, /// each with it's own selection. /// /// /// You can use the property to specify a part of the hierarchy belonging to the current player. /// Mouse selection will ignore any game objects not within this hierarchy. For gamepad/keyboard selection, you need to make sure that /// the navigation links stay within the player's hierarchy. /// public class MultiplayerEventSystem : EventSystem { [Tooltip("If set, only process mouse events for any game objects which are children of this game object.")] [SerializeField] private GameObject m_PlayerRoot; public GameObject playerRoot { get => m_PlayerRoot; set => m_PlayerRoot = value; } protected override void Update() { var originalCurrent = current; current = this; // in order to avoid reimplementing half of the EventSystem class, just temporarily assign this EventSystem to be the globally current one try { base.Update(); } finally { current = originalCurrent; } } } } #endif