void Update() { if (!gamepadEnabled) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Debug.DrawRay(ray.origin, ray.direction); RaycastHit hit; int layerMask = 1 << 11; bool rayCastHitSomething = Physics.Raycast(ray, out hit, 1000, layerMask); if (rayCastHitSomething) { TestSelectableArea hitArea = hit.collider.GetComponent <TestSelectableArea>(); if (hitArea != null) { if (currentSelectableArea != hitArea) { if (currentSelectableArea != null) { currentSelectableArea.Selectable.Deselect(); } hitArea.Selectable.Select(); currentSelectableArea = hitArea; } } else { if (currentSelectableArea != null) { currentSelectableArea.Selectable.Deselect(); currentSelectableArea = null; } } } else { if (currentSelectableArea != null) { currentSelectableArea.Selectable.Deselect(); currentSelectableArea = null; } } if (Input.GetMouseButtonDown(0)) { Interact(); } if (Input.GetMouseButtonUp(0)) { InteractEnded(); } if (Input.GetMouseButtonDown(1)) { Cancel(); } } else { TestSelectable previousSelectable = lastSelected; if (Input.GetKeyDown(KeyCode.X) || Input.GetKeyDown(KeyCode.Return)) { Interact(); } if (Input.GetKeyUp(KeyCode.X) || Input.GetKeyUp(KeyCode.Return)) { InteractEnded(); } if (Input.GetKeyDown(KeyCode.Z) || Input.GetKeyDown(KeyCode.Backspace)) { Cancel(); } if (Input.GetKeyDown(KeyCode.LeftArrow)) { EmulateDirection(Direction.Left); } if (Input.GetKeyDown(KeyCode.RightArrow)) { EmulateDirection(Direction.Right); } if (Input.GetKeyDown(KeyCode.UpArrow)) { EmulateDirection(Direction.Up); } if (Input.GetKeyDown(KeyCode.DownArrow)) { EmulateDirection(Direction.Down); } if (previousSelectable != lastSelected) { previousSelectable.Deselect(); lastSelected.Select(); currentSelectableArea = lastSelected.SelectableArea; } } }
void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Debug.DrawRay(ray.origin, ray.direction); RaycastHit hit; int layerMask = 1 << 11; bool rayCastHitSomething = Physics.Raycast(ray, out hit, 1000, layerMask); if (rayCastHitSomething) { TestSelectableArea hitArea = hit.collider.GetComponent <TestSelectableArea>(); if (hitArea != null) { if (currentSelectableArea != hitArea) { if (currentSelectableArea != null) { currentSelectableArea.Selectable.Deselect(); } hitArea.Selectable.Select(); currentSelectableArea = hitArea; } } else { if (currentSelectableArea != null) { currentSelectableArea.Selectable.Deselect(); currentSelectableArea = null; } } } else { if (currentSelectableArea != null) { currentSelectableArea.Selectable.Deselect(); currentSelectableArea = null; } } if (Input.GetMouseButtonDown(0)) { if (currentSelectableArea != null && currentSelectableArea.Selectable.Interact()) { currentSelectable.DeactivateChildSelectableAreas(currentSelectableArea.Selectable); currentSelectable = currentSelectableArea.Selectable; currentSelectable.ActivateChildSelectableAreas(); } } if (Input.GetMouseButtonUp(0)) { if (currentSelectableArea != null) { currentSelectableArea.Selectable.InteractEnded(); } } if (Input.GetMouseButtonDown(1)) { if (currentSelectable.Parent != null && currentSelectable.Cancel()) { currentSelectable.DeactivateChildSelectableAreas(currentSelectable.Parent); currentSelectable = currentSelectable.Parent; currentSelectable.ActivateChildSelectableAreas(); } } }
void OnGUI() { if (GUILayout.Button("Activate Needy Modules")) { foreach (KMNeedyModule needyModule in GameObject.FindObjectsOfType <KMNeedyModule>()) { if (needyModule.OnNeedyActivation != null) { needyModule.OnNeedyActivation(); } } } if (GUILayout.Button("Deactivate Needy Modules")) { foreach (KMNeedyModule needyModule in GameObject.FindObjectsOfType <KMNeedyModule>()) { if (needyModule.OnNeedyDeactivation != null) { needyModule.OnNeedyDeactivation(); } } } if (GUILayout.Button("Lights On")) { TurnLightsOn(); fakeInfo.OnLightsOn(); } if (GUILayout.Button("Lights Off")) { TurnLightsOff(); fakeInfo.OnLightsOff(); } bool previous = gamepadEnabled; gamepadEnabled = GUILayout.Toggle(gamepadEnabled, "Emulate Gamepad"); if (!previous && gamepadEnabled) { lastSelected = currentSelectable.GetCurrentChild(); lastSelected.Select(); currentSelectableArea = lastSelected.SelectableArea; } GUILayout.Label("Time remaining: " + fakeInfo.GetFormattedTime()); GUILayout.Space(10); GUI.SetNextControlName("commandField"); command = GUILayout.TextField(command); if ((GUILayout.Button("Simulate Twitch Command") || Event.current.keyCode == KeyCode.Return) && GUI.GetNameOfFocusedControl() == "commandField" && command != "") { Debug.Log("Twitch Command: " + command); foreach (var module in FindObjectsOfType <KMBombModule>().Concat <MonoBehaviour>(FindObjectsOfType <KMNeedyModule>())) { Component[] allComponents = module.gameObject.GetComponentsInChildren <Component>(true); foreach (var component in allComponents) { var type = component.GetType(); var method = type.GetMethod("ProcessTwitchCommand", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (method != null) { StartCoroutine(SimulateModule(component, module.transform, method, command)); } } } command = ""; } }