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,
*/
}
}