Example #1
0
        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;
        }
Example #2
0
        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);
        }