public static bool IsInputActionTriggered <TNodeData>(this IBlackboard bb, int index, INodeBlob blob)
            where TNodeData : struct, IInputActionNodeData
        {
            var action = bb.GetInputAction <TNodeData>(index, blob);

            return(action != null && action.triggered);
        }
        public static object ReadInputActionValueAsObject <TNodeData>(this IBlackboard bb, int index, INodeBlob blob)
            where TNodeData : struct, IInputActionNodeData
        {
            var action = bb.GetInputAction <TNodeData>(index, blob);

            return(action?.ReadValueAsObject());
        }
        public static TValue?ReadInputActionValue <TNodeData, TValue>(this IBlackboard bb, int index, INodeBlob blob)
            where TValue : struct
            where TNodeData : struct, IInputActionNodeData
        {
            var action = bb.GetInputAction <TNodeData>(index, blob);

            return(action?.ReadValue <TValue>());
        }