void AddInputActionAssetBindings(InputActionAsset asset)
    {
        if (asset == null)
        {
            return;
        }

        KeyboardSplitter keyboardSplitter = (KeyboardSplitter)target;

        foreach (var p in keyboardSplitter.players)
        {
            foreach (var map in asset.actionMaps)
            {
                foreach (var binding in map.bindings)
                {
                    if (binding.path.StartsWith("<Keyboard>"))
                    {
                        var route = new KeyboardSplitter.KeyRemap(binding);

                        if (p.routes.Count(x => x.original == route.original) == 0)
                        {
                            p.routes.Add(route);
                        }
                    }
                }
            }
        }

        serializedObject.ApplyModifiedProperties();
    }
    public override void OnInspectorGUI()
    {
        KeyboardSplitter keyboardSplitter = (KeyboardSplitter)target;

        EditorGUI.BeginDisabledGroup(keyboardSplitter.players == null || keyboardSplitter.players.Count == 0);
        if (GUILayout.Button("Import Bindings"))
        {
            OpenInputActionAssetPicker();
        }
        EditorGUI.EndDisabledGroup();

        if (Event.current.commandName == "ObjectSelectorUpdated" && EditorGUIUtility.GetObjectPickerControlID() == pickerId)
        {
            InputActionAsset asset = (InputActionAsset)EditorGUIUtility.GetObjectPickerObject();
            AddInputActionAssetBindings(asset);
            pickerId = 0;
        }
        base.OnInspectorGUI();
    }