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(); }