예제 #1
0
        /// <inheritdoc />
        public IInput EnableInputLevel(InputLevel level)
        {
            if (IsInputEnabled(level))
            {
                return(this);
            }

            mEnabledInputs |= level;
            EventManager.Notify(() => EventManager.Local.InputLevelChanged(level, true));

            return(this);
        }
예제 #2
0
        /// <inheritdoc />
        public IInput DisableInputLevel(InputLevel level)
        {
            if (!IsInputEnabled(level))
            {
                return(this);
            }

            mEnabledInputs &= ~level;
            EventManager.Notify(() => EventManager.Local.InputLevelChanged(level, false));

            return(this);
        }
예제 #3
0
        /// <inheritdoc />
        public IInput SetInputLevel(InputLevel level)
        {
            mEnabledInputs = level;
            foreach (object value in Enum.GetValues(typeof(InputLevel)))
            {
                InputLevel v = (InputLevel)value;

                if ((level & v) == v)
                {
                    EventManager.Notify(() => EventManager.Local.InputLevelChanged(v, true));
                }
                else
                {
                    EventManager.Notify(() => EventManager.Local.InputLevelChanged(v, false));
                }
            }

            return(this);
        }
예제 #4
0
 public AxisMap(Func <string, float> check, string value, InputLevel level) : base(level)
 {
     mFunction = check;
     mAxisName = value;
 }
예제 #5
0
 public InputMap(Func <T, bool> check, T value, InputLevel level) : base(level)
 {
     mFunction = check;
     mValue    = value;
 }
예제 #6
0
 /// <inheritdoc />
 public bool IsInputEnabled(InputLevel level)
 {
     return((mEnabledInputs & level) == level);
 }
예제 #7
0
 /// <inheritdoc />
 public IInput SetInputLevelState(InputLevel flag, bool state)
 {
     return(state ? EnableInputLevel(flag) : DisableInputLevel(flag));
 }
예제 #8
0
 protected BaseInputMap(InputLevel l)
 {
     mInputLevel = l;
 }
예제 #9
0
        /// <inheritdoc />
        public IInput RegisterAxis(Func <string, float> method, string axis, Action <float> command, InputLevel level, bool allowOtherAxes = true)
        {
            Logger.Info("Registering " + command.Method.Name + " as a new input on axis " + axis + ".", Logger.System.Input);
            AxisMap newInput = new AxisMap(method, axis, level);

            ClearInputFromOtherCommands(newInput);

            if (!allowOtherAxes)
            {
                ClearOtherInputsForCommand(command, mAxes);
            }

            if (!mAxes.ContainsKey(command))
            {
                mAxes[command] = new List <AxisMap>();
            }

            mAxes[command].Add(newInput);
            return(this);
        }
예제 #10
0
        /// <inheritdoc />
        public IInput RegisterInput <T>(Func <T, bool> method, T key, Action command, InputLevel level, bool allowOtherKeys = true)
        {
            Logger.Info("Registering " + command.Method.Name + " as a new input on key " + key + ".", Logger.System.Input);

            if (command.Method.Name.Contains("Cmd") || command.Method.Name.Contains("Rpc"))
            {
                throw new ArgumentException("It is forbidden to bind network calls directly to the input system!", "command");
            }

            var newInput = new InputMap <T>(method, key, level);

            ClearInputFromOtherCommands(newInput);

            if (!allowOtherKeys)
            {
                ClearOtherInputsForCommand(command, mCommands);
            }

            if (!mCommands.ContainsKey(command))
            {
                mCommands[command] = new List <BaseInputMap>();
            }

            mCommands[command].Add(newInput);
            return(this);
        }
예제 #11
0
 /// <summary>
 /// Event called when the local player's input rules have changed.
 /// </summary>
 /// <param name="level">The input type that was changed.</param>
 /// <param name="state">Whether that input was enabled (true) or disabled (false).</param>
 public static void InputLevelChanged(InputLevel level, bool state)
 {
     OnInputLevelChanged(level, state);
 }