public override IEnumerator TestForInput() { if (!IsTestingForInput) { IsTestingForInput = true; ButtonMapData originalData = buttonMapData; buttonMapData.buttonMapName = ""; MapMessage = "Press the button...Ready"; yield return(new WaitForSeconds(2f)); float startTime = Time.time; yield return(new WaitWhile(() => { buttonMapData.buttonMapName = Input.DetectButton(controller); MapMessage = "Press the button..." + Mathf.RoundToInt(InputCheckTime - (Time.time - startTime)).ToString(); return buttonMapData.buttonMapName == "" && Time.time - startTime < InputCheckTime; })); if (buttonMapData.buttonMapName == "") { buttonMapData = originalData; } MapMessage = ButtonMapData.buttonMapName; IsTestingForInput = false; UpdateButtonString(); } }
public ButtonMap(ButtonMapData _buttonMapData, InputController _config) : base(_config) { buttonMapData = _buttonMapData; if (buttonMapData.buttonMapName == null) { buttonMapData.buttonMapName = "empty"; } MapMessage = ButtonMapName; if (GameInitializer.HasInitialized) { UpdateButtonString(); } }
public void ButtonMapsGUI(ButtonMap buttonMap, RuntimePlatform runtimePlatform) { RuntimePlatform filter = filterForPlatform ? runtimePlatform : RuntimePlatform.PS4; Dictionary <string, string> joyButtons = JoyPlatformMaps.GetButtonsForPlatform(filter); string[] joyButtonArrayNames = joyButtons.Select(x => x.Key + " | " + x.Value).OrderBy(x => x).ToArray(); EditorGUI.BeginChangeCheck(); int newBut = EditorGUILayout.Popup(joyButtons.Keys.OrderBy(x => x).ToList().IndexOf(buttonMap.ButtonMapData.buttonMapName), joyButtonArrayNames); if (EditorGUI.EndChangeCheck()) { Undo.RegisterCompleteObjectUndo(target, ("Changed mapping of " + buttonMap.Name)); string val = joyButtons.Keys.ToArray().OrderBy(x => x).ToArray()[newBut]; ButtonMapData buttonMapData = buttonMap.ButtonMapData; buttonMapData.buttonMapName = val; typeof(ButtonMap).GetField("buttonMapData", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public).SetValue(buttonMap, buttonMapData); EditorUtility.SetDirty(target); } }