void AddAxisInAxisInput(TCT_AxisInput _action, AxisCode _key)
    {
        if (_action.AllAxisCode.Any(n => n == AxisCode.None))
        {
            Debug.LogWarning("A axis is not assign. Please assign it to get an other key");
            return;
        }

        _action.AddKey(_key);
    }
    public void SubAtAxisInput(string _nameAxis, Action <float> _methodeToSub)
    {
        if (!ExistAxisInput(_nameAxis))
        {
            Debug.LogError($"No one AxisInput is named by {_nameAxis}");
            return;
        }

        TCT_AxisInput _currentAxis = GetAxisInput(_nameAxis);

        _currentAxis.AxisInput += _methodeToSub;
    }
    void DrawAxisInput(bool _show, TCT_AxisInput _axis)
    {
        if (!_show)
        {
            return;
        }

        if (_axis == null || _axis.AllAxisCode.Count < 1)
        {
            return;
        }

        for (int i = 0; i < _axis.AllAxisCode.Count; i++)
        {
            Enum _currentKeyCode = _axis.AllAxisCode[i];

            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.Separator();

            _currentKeyCode = EditorGUILayout.EnumPopup(_currentKeyCode, GUILayout.MaxWidth(100));

            if (_axis.ExistKeyCode((AxisCode)_currentKeyCode) && (AxisCode)_currentKeyCode != _axis.AllAxisCode[i])
            {
                Debug.LogWarning("this Axis is already assign in this Action. Please select an other");
            }
            else
            {
                _axis.AllAxisCode[i] = (AxisCode)_currentKeyCode;
            }

            GUILayout.Box("Sensibility", GUILayout.MaxWidth(80));

            _axis.sensibilty = EditorGUILayout.FloatField(_axis.sensibilty, GUILayout.MaxWidth(50));

            GUILayout.Box("DeadZone", GUILayout.MaxWidth(80));

            _axis.deadZone = EditorGUILayout.FloatField(_axis.deadZone, GUILayout.MaxWidth(50));


            EditorLayout.Button("x", RemoveAxisCode, _axis, (AxisCode)_currentKeyCode);

            EditorGUILayout.EndHorizontal();

            EditorLayout.Space();
        }
    }
 void RemoveAxisCode(TCT_AxisInput _axis, AxisCode _code)
 {
     _axis.RemoveKey(_code);
 }
 public void RemoveAxisInput(TCT_AxisInput _axis)
 {
     allAxisInput.Remove(_axis);
 }
 public void AddAxisInput(TCT_AxisInput _action) => allAxisInput.Add(_action);
 public void RemoveAxisInput(TCT_AxisInput _action) => allAxisInput.Remove(_action);