Example #1
0
        public void Apply(float value)
        {
            bool isDown = value > Threshold;

            if (_isEnabled != isDown)
            {
                _isEnabled = isDown;

                if (Toggles)
                {
                    if (isDown)
                    {
                        if (ToggleStates.Contains(_control.CurrentShiftState))
                        {
                            int index = ToggleStates.IndexOf(_control.CurrentShiftState);

                            if (ToggleStates.Count > index + 1)
                            {
                                _control.ChangeState(ToggleStates[index + 1]);
                            }
                            else
                            {
                                _control.ChangeState(ToggleStates[0]);
                            }
                        }
                        else
                        {
                            _control.ChangeState(ToggleStates[0]);
                        }
                    }
                }
                else if (isDown)
                {
                    if (TargetState != _control.CurrentShiftState)
                    {
                        _previousState = _control.CurrentShiftState;
                    }

                    _control.ChangeState(TargetState);
                }
                else
                {
                    _control.ChangeState(_previousState);
                }
            }
        }