internal static void UpdateInternal() { AssertIsSetup(); if (OnSetup != null) { OnSetup.Invoke(); OnSetup = null; } if (!enabled) { return; } if (SuspendInBackground && !applicationIsFocused) { return; } currentTick++; UpdateCurrentTime(); var deltaTime = currentTime - lastUpdateTime; MouseProvider.Update(); KeyboardProvider.Update(); UpdateDeviceManagers(deltaTime); CommandWasPressed = false; UpdateDevices(deltaTime); CommitDevices(deltaTime); var lastActiveDevice = ActiveDevice; UpdateActiveDevice(); UpdatePlayerActionSets(deltaTime); // We wait to trigger OnActiveDeviceChanged until after UpdatePlayerActionSets // so binding name changes will have updated, which is more intuitive. if (lastActiveDevice != ActiveDevice && OnActiveDeviceChanged != null) { OnActiveDeviceChanged.Invoke(ActiveDevice); } if (OnUpdate != null) { OnUpdate.Invoke(currentTick, deltaTime); } lastUpdateTime = currentTime; }
static void UpdateActiveDevice() { InputDevice lastActiveDevice = ActiveDevice; foreach (InputDevice device in devices) { if (ActiveDevice == InputDevice.Null || device.LastChangedAfter(ActiveDevice)) { ActiveDevice = device; } } if (lastActiveDevice == ActiveDevice) { return; } OnActiveDeviceChanged.SafeInvoke(ActiveDevice); }