예제 #1
0
    public void TriggerKeyEvent(int key, int inputType)
    {
        if (!keyEvents.ContainsKey(key) || !keyEvents[key].ContainsKey(inputType))
        {
            return;
        }

        for (int i = keyEvents[key][inputType].Count - 1; i >= 0; i--)
        {
            bool           inputTriggered = false;
            KeyCode        keyCode        = (KeyCode)key;
            InputPressType typeEnum       = (InputPressType)inputType;

            switch (typeEnum)
            {
            case InputPressType.DOWN:
                if (Input.GetKeyDown(keyCode))
                {
                    inputTriggered = true;
                }
                break;

            case InputPressType.HOLD:
                if (Input.GetKey(keyCode))
                {
                    inputTriggered = true;
                }
                break;

            case InputPressType.UP:
                if (Input.GetKeyUp(keyCode))
                {
                    inputTriggered = true;
                }
                break;
            }

            if (inputTriggered)
            {
                keyEvents[key][inputType][i].InputCallback();

                if (!keyEvents[key][inputType][i].permanent)
                {
                    keyEvents[key][inputType].RemoveAt(i);
                }
            }
        }
    }
예제 #2
0
    public void AddNewInput <T>(IInputCallback <T> iCB, T cbParam, KeyCode key, InputPressType iT, bool perm = false)
    {
        int kId       = (int)key;
        int inputType = (int)iT;

        if (!keyEvents.ContainsKey(kId))
        {
            keyEvents.Add(kId, new Dictionary <int, List <InputDataBase> >());
        }

        if (!keyEvents[kId].ContainsKey((int)iT))
        {
            keyEvents[kId].Add(inputType, new List <InputDataBase>());
        }

        keyEvents[kId][inputType].Add(new InputData <T>(cbParam, iCB, key, inputType, perm));
        //return iS.Add(new InputData<T>(cbParam, iCB, key, iT, perm));
    }