Esempio n. 1
0
        public static KeyAction CreateAxis(string axisName)
        {
            KeyAction keyAction = new KeyAction();

            keyAction.actionType = KeyActionType.Axis;
            keyAction.axisName   = axisName;

            //            keyAction.axisValueMonitor = new ValueMonitor<bool>(() =>
            //                {
            //                    keyAction.axisValue = Input.GetAxis(keyAction.axisName);
            //                    return keyAction.axisValue;
            //
            //                },
            //                (float from, float to) =>
            //                {
            //                    if (to == 0)
            //                    {
            //                        keyAction.axisButtonRelease = true;
            //
            //                    }
            //
            //                });

            return(keyAction);
        }
Esempio n. 2
0
        public static KeyAction CreateAxisButtonPress(string axisName, float axisValueThreshold)
        {
            KeyAction keyAction = new KeyAction();

            keyAction.actionType         = KeyActionType.AxisButtonPress;
            keyAction.axisName           = axisName;
            keyAction.axisValueThreshold = axisValueThreshold;

            keyAction.axisValueMonitor = new ValueMonitor <bool>(() =>
            {
                keyAction.axisValue = Input.GetAxis(keyAction.axisName);
//                    Debug.Log(axisName + "CreateAxisButtonPress = " + keyAction.axisValue);

                return(Mathf.Abs(keyAction.axisValue - keyAction.axisValueThreshold) < 0.001f);
            },
                                                                 (bool from, bool to) =>
            {
                if (to)
                {
                    keyAction.axisButtonPress = to;
                }
            });

            return(keyAction);
        }
Esempio n. 3
0
        public static KeyAction CreateButtonRelease(string buttonName)
        {
            KeyAction keyAction = new KeyAction();

            keyAction.actionType = KeyActionType.ButtonRelease;
            keyAction.buttonName = buttonName;
            return(keyAction);
        }
Esempio n. 4
0
        public static KeyAction CreateKeyRelease(KeyCode keyCode)
        {
            KeyAction keyAction = new KeyAction();

            keyAction.actionType = KeyActionType.Release;
            keyAction.keyCode    = keyCode;
            return(keyAction);
        }
Esempio n. 5
0
        public static KeyAction CreateKeyPress(KeyCode keyCode)
        {
            KeyAction keyAction = new KeyAction();

            keyAction.actionType = KeyActionType.Press;
            keyAction.keyCode    = keyCode;
            return(keyAction);
        }
Esempio n. 6
0
        public override bool Equals(object obj)
        {
            KeyAction keyAction = obj as KeyAction;

            if (keyAction == null)
            {
                return(false);
            }
            if (GetHashCode() == keyAction.GetHashCode())
            {
                return(true);
            }
            return(false);
        }
 public KeyActionAndRoleActionBinding(KeyAction keyAction, RoleAction roleAction)
 {
     this.keyAction  = keyAction;
     this.roleAction = roleAction;
 }
Esempio n. 8
0
        public void Update()
        {
            currActiveKeyBindingList.Clear();

            foreach (var keyBinding in keyBindingList)
            {
                KeyAction     keyAction     = keyBinding.Key;
                KeyCode       keyCode       = keyAction.keyCode;
                KeyActionType keyActionType = keyAction.actionType;

                switch (keyActionType)
                {
                case KeyActionType.Press:
                    if (Input.GetKeyDown(keyCode))
                    {
                        currActiveKeyBindingList.Add(keyBinding);
                    }
                    break;

                case KeyActionType.Release:
                    if (Input.GetKeyUp(keyCode))
                    {
                        currActiveKeyBindingList.Add(keyBinding);
                    }
                    break;

                case KeyActionType.ButtonPress:
                    if (Input.GetButtonDown(keyAction.buttonName))
                    {
                        currActiveKeyBindingList.Add(keyBinding);
                    }
                    break;

                case KeyActionType.ButtonRelease:
                    if (Input.GetButtonUp(keyAction.buttonName))
                    {
                        currActiveKeyBindingList.Add(keyBinding);
                    }
                    break;

                case KeyActionType.AxisButtonPress:
                    keyAction.Update();
                    if (keyAction.axisButtonPress)
                    {
                        keyAction.axisButtonPress = false;
                        currActiveKeyBindingList.Add(keyBinding);
                    }
                    break;

                case KeyActionType.AxisButtonRelease:
                    keyAction.Update();
                    if (keyAction.axisButtonRelease)
                    {
                        keyAction.axisButtonRelease = false;
                        currActiveKeyBindingList.Add(keyBinding);
                    }
                    break;

                case KeyActionType.Axis:
                    keyAction.axisValue = Input.GetAxis(keyAction.axisName);
                    if (Mathf.Abs(keyAction.axisValue) > 0 || (keyAction.axisValue != keyAction.oldAxisValue))
                    {
                        keyAction.oldAxisValue = keyAction.axisValue;
                        currActiveKeyBindingList.Add(keyBinding);
                    }
                    break;

                default:
                    break;
                }
            }

            // foreach (var keyBinding in currActiveKeyBindingList)
            // {
            //     if (keyBinding.Key.actionType == KeyActionType.Press || keyBinding.Key.actionType == KeyActionType.Release)
            //         Debug.Log((keyBinding.Key.actionType == KeyActionType.Press ? "按下" : "松开") + " " + keyBinding.Key.keyCode);
            // }

            if (onInput != null)
            {
                if (currActiveKeyBindingList.Count > 0)
                {
                    onInput(currActiveKeyBindingList);
                }
            }
        }