using UnityEngine.InputSystem.LowLevel; ////REVIEW: how do we handle the case where the OS may (through whatever means) recognize individual real-world users, //// associate a user account with each one, and recognize when a controller is passed from one user to the other? //// (NUI on Xbox probably gives us that scenario) namespace UnityEngine.InputSystem.Users { /// /// Indicates what type of change related to an occurred. /// /// public enum InputUserChange { /// /// A new user was added to the system. /// /// Added, /// /// An existing user was removed from the user. /// /// /// s are only removed when explicitly requested (). /// /// Removed, /// /// A user has had a device assigned to it. /// /// /// DevicePaired, /// /// A user has had a device removed from it. /// /// /// This is different from in that the removal is intentional. /// instead indicates that the device was removed due to causes outside of the control of the application (such /// as battery loss) whereas DeviceUnpaired indicates the device was removed from the user under the control of /// the application itself. /// /// /// /// DeviceUnpaired, /// /// A device was removed while paired to the user. /// /// /// This scenario happens on battery loss, for example. /// /// Note that there is still a change sent when the device is subsequently removed /// from the user. /// /// /// DeviceLost, ////REVIEW: should we tie this to the specific device requirement slot in the control scheme? /// /// A device that was previously lost () was regained by the user. /// /// /// This can happen, for example, when a gamepad runs out of battery and is then plugged in by wire. /// /// Note that a device may be permanently lost and instead be replaced by a different device. /// /// DeviceRegained, ////TODO: bring documentation for these back when user management is implemented on Xbox and PS AccountChanged, AccountNameChanged, AccountSelectionInProgress, AccountSelectionCanceled, AccountSelectionComplete, ////REVIEW: send notifications about the matching status of the control scheme? maybe ControlSchemeActivated, ControlSchemeDeactivated, //// and ControlSchemeChanged? /// /// A user switched to a different control scheme. /// /// /// ControlSchemeChanged, /// /// A user's bound controls have changed, either because the bindings of the user have changed (for example, /// due to an override applied with ) /// or because the controls themselves may have changed configuration (every time the device of the controls receives /// an ; for example, when the current keyboard layout on a /// changes which in turn modifies the s of the keys on the keyboard). /// ControlsChanged, /* ////TODO: this is waiting for InputUserSettings /// /// A setting in the user's has changed. /// /// /// This is separate from even though bindings are part of user profiles /// (). The reason is that binding changes often require /// SettingsChanged, */ } }