private IEnumerator SetupAction(
        SteamVRBooleanAction action,
        SteamVR_Action_Boolean usedAction,
        UnityAction <SteamVR_Behaviour_Boolean, SteamVR_Input_Sources, bool> pressDown,
        UnityAction <SteamVR_Behaviour_Boolean, SteamVR_Input_Sources, bool> pressUp)
    {
        action.inputSource   = _hand;
        action.booleanAction = usedAction;
        action.enabled       = false;

        yield return(null);

        action.enabled     = true;
        action.onPressDown = new SteamVR_Behaviour_BooleanEvent();
        action.onPressUp   = new SteamVR_Behaviour_BooleanEvent();

        if (pressDown != null)
        {
            action.onPressDown.AddListener(pressDown);
        }

        if (pressUp != null)
        {
            action.onPressUp.AddListener(pressUp);
        }
    }
    private void CreateSetupAction(
        ref SteamVRBooleanAction action,
        SteamVR_Action_Boolean usedAction,
        UnityAction <SteamVR_Behaviour_Boolean, SteamVR_Input_Sources, bool> pressDown,
        UnityAction <SteamVR_Behaviour_Boolean, SteamVR_Input_Sources, bool> pressUp)
    {
        action = gameObject.AddComponent <SteamVRBooleanAction>();

        StartCoroutine(SetupAction(action,
                                   usedAction,
                                   pressDown,
                                   pressUp));
    }