private void ShowText(EVRButtonId button, string text, bool highlightButton = true) { if (this.buttonHintInfos.ContainsKey(button)) { ControllerButtonHints.ButtonHintInfo buttonHintInfo = this.buttonHintInfos[button]; buttonHintInfo.textHintObject.SetActive(true); buttonHintInfo.textHintActive = true; if (buttonHintInfo.text != null) { buttonHintInfo.text.text = text; } if (buttonHintInfo.textMesh != null) { buttonHintInfo.textMesh.text = text; } this.UpdateTextHint(buttonHintInfo); if (highlightButton) { this.ShowButtonHint(new EVRButtonId[] { button }); } this.renderModel.gameObject.SetActive(true); } }
private void ShowButtonHint(params EVRButtonId[] buttons) { this.renderModel.gameObject.SetActive(true); this.renderModel.GetComponentsInChildren <MeshRenderer>(this.renderers); for (int i = 0; i < this.renderers.Count; i++) { Texture mainTexture = this.renderers[i].material.mainTexture; this.renderers[i].sharedMaterial = this.controllerMaterial; this.renderers[i].material.mainTexture = mainTexture; this.renderers[i].material.renderQueue = this.controllerMaterial.shader.renderQueue; } for (int j = 0; j < buttons.Length; j++) { if (this.buttonHintInfos.ContainsKey(buttons[j])) { ControllerButtonHints.ButtonHintInfo buttonHintInfo = this.buttonHintInfos[buttons[j]]; foreach (MeshRenderer item in buttonHintInfo.renderers) { if (!this.flashingRenderers.Contains(item)) { this.flashingRenderers.Add(item); } } } } this.startTime = Time.realtimeSinceStartup; this.tickCount = 0f; }
private string GetActiveHintText(EVRButtonId button) { if (this.buttonHintInfos.ContainsKey(button)) { ControllerButtonHints.ButtonHintInfo buttonHintInfo = this.buttonHintInfos[button]; if (buttonHintInfo.textHintActive) { return(buttonHintInfo.text.text); } } return(string.Empty); }
private void HideText(EVRButtonId button) { if (this.buttonHintInfos.ContainsKey(button)) { ControllerButtonHints.ButtonHintInfo buttonHintInfo = this.buttonHintInfos[button]; buttonHintInfo.textHintObject.SetActive(false); buttonHintInfo.textHintActive = false; this.HideButtonHint(new EVRButtonId[] { button }); } }
private bool IsButtonHintActive(EVRButtonId button) { if (this.buttonHintInfos.ContainsKey(button)) { ControllerButtonHints.ButtonHintInfo buttonHintInfo = this.buttonHintInfos[button]; foreach (MeshRenderer item in buttonHintInfo.renderers) { if (this.flashingRenderers.Contains(item)) { return(true); } } return(false); } return(false); }
private void HideButtonHint(params EVRButtonId[] buttons) { Color color = this.controllerMaterial.GetColor(this.colorID); for (int i = 0; i < buttons.Length; i++) { if (this.buttonHintInfos.ContainsKey(buttons[i])) { ControllerButtonHints.ButtonHintInfo buttonHintInfo = this.buttonHintInfos[buttons[i]]; foreach (MeshRenderer meshRenderer in buttonHintInfo.renderers) { meshRenderer.material.color = color; this.flashingRenderers.Remove(meshRenderer); } } } if (this.flashingRenderers.Count == 0) { this.renderModel.gameObject.SetActive(false); } }
private void UpdateTextHint(ControllerButtonHints.ButtonHintInfo hintInfo) { Transform hmdTransform = this.player.hmdTransform; Vector3 forward = hmdTransform.position - hintInfo.canvasOffset.position; Quaternion a = Quaternion.LookRotation(forward, Vector3.up); Quaternion b = Quaternion.LookRotation(forward, hmdTransform.up); float t; if (hmdTransform.forward.y > 0f) { t = Util.RemapNumberClamped(hmdTransform.forward.y, 0.6f, 0.4f, 1f, 0f); } else { t = Util.RemapNumberClamped(hmdTransform.forward.y, -0.8f, -0.6f, 1f, 0f); } hintInfo.canvasOffset.rotation = Quaternion.Slerp(a, b, t); Transform transform = hintInfo.line.transform; hintInfo.line.useWorldSpace = false; hintInfo.line.SetPosition(0, transform.InverseTransformPoint(hintInfo.textStartAnchor.position)); hintInfo.line.SetPosition(1, transform.InverseTransformPoint(hintInfo.textEndAnchor.position)); }
private void CreateAndAddButtonInfo(EVRButtonId buttonID) { Transform transform = null; List <MeshRenderer> list = new List <MeshRenderer>(); string text = "Looking for button: " + buttonID; EVRButtonId evrbuttonId = buttonID; if (buttonID == EVRButtonId.k_EButton_Grip && SteamVR.instance.hmd_TrackingSystemName.ToLowerInvariant().Contains("oculus")) { evrbuttonId = EVRButtonId.k_EButton_Axis2; } ulong num = 1UL << (int)evrbuttonId; string text2; foreach (KeyValuePair <string, ulong> keyValuePair in this.componentButtonMasks) { if ((keyValuePair.Value & num) == num) { text2 = text; text = string.Concat(new object[] { text2, "\nFound component: ", keyValuePair.Key, " ", keyValuePair.Value }); Transform transform2 = this.renderModel.FindComponent(keyValuePair.Key); transform = transform2; text2 = text; text = string.Concat(new object[] { text2, "\nFound componentTransform: ", transform2, " buttonTransform: ", transform }); list.AddRange(transform2.GetComponentsInChildren <MeshRenderer>()); } } text2 = text; text = string.Concat(new object[] { text2, "\nFound ", list.Count, " renderers for ", buttonID }); foreach (MeshRenderer meshRenderer in list) { text = text + "\n\t" + meshRenderer.name; } this.HintDebugLog(text); if (transform == null) { this.HintDebugLog("Couldn't find buttonTransform for " + buttonID); return; } ControllerButtonHints.ButtonHintInfo buttonHintInfo = new ControllerButtonHints.ButtonHintInfo(); this.buttonHintInfos.Add(buttonID, buttonHintInfo); buttonHintInfo.componentName = transform.name; buttonHintInfo.renderers = list; buttonHintInfo.localTransform = transform.Find("attach"); ControllerButtonHints.OffsetType offsetType = ControllerButtonHints.OffsetType.Right; switch (buttonID) { case EVRButtonId.k_EButton_System: offsetType = ControllerButtonHints.OffsetType.Right; break; case EVRButtonId.k_EButton_ApplicationMenu: offsetType = ControllerButtonHints.OffsetType.Right; break; case EVRButtonId.k_EButton_Grip: offsetType = ControllerButtonHints.OffsetType.Forward; break; default: if (buttonID != EVRButtonId.k_EButton_Axis0) { if (buttonID == EVRButtonId.k_EButton_Axis1) { offsetType = ControllerButtonHints.OffsetType.Right; } } else { offsetType = ControllerButtonHints.OffsetType.Up; } break; } switch (offsetType) { case ControllerButtonHints.OffsetType.Up: buttonHintInfo.textEndOffsetDir = buttonHintInfo.localTransform.up; break; case ControllerButtonHints.OffsetType.Right: buttonHintInfo.textEndOffsetDir = buttonHintInfo.localTransform.right; break; case ControllerButtonHints.OffsetType.Forward: buttonHintInfo.textEndOffsetDir = buttonHintInfo.localTransform.forward; break; case ControllerButtonHints.OffsetType.Back: buttonHintInfo.textEndOffsetDir = -buttonHintInfo.localTransform.forward; break; } Vector3 position = buttonHintInfo.localTransform.position + buttonHintInfo.localTransform.forward * 0.01f; buttonHintInfo.textHintObject = UnityEngine.Object.Instantiate <GameObject>(this.textHintPrefab, position, Quaternion.identity); buttonHintInfo.textHintObject.name = "Hint_" + buttonHintInfo.componentName + "_Start"; buttonHintInfo.textHintObject.transform.SetParent(this.textHintParent); buttonHintInfo.textHintObject.layer = base.gameObject.layer; buttonHintInfo.textHintObject.tag = base.gameObject.tag; buttonHintInfo.textStartAnchor = buttonHintInfo.textHintObject.transform.Find("Start"); buttonHintInfo.textEndAnchor = buttonHintInfo.textHintObject.transform.Find("End"); buttonHintInfo.canvasOffset = buttonHintInfo.textHintObject.transform.Find("CanvasOffset"); buttonHintInfo.line = buttonHintInfo.textHintObject.transform.Find("Line").GetComponent <LineRenderer>(); buttonHintInfo.textCanvas = buttonHintInfo.textHintObject.GetComponentInChildren <Canvas>(); buttonHintInfo.text = buttonHintInfo.textCanvas.GetComponentInChildren <Text>(); buttonHintInfo.textMesh = buttonHintInfo.textCanvas.GetComponentInChildren <TextMesh>(); buttonHintInfo.textHintObject.SetActive(false); buttonHintInfo.textStartAnchor.position = position; if (buttonHintInfo.text != null) { buttonHintInfo.text.text = buttonHintInfo.componentName; } if (buttonHintInfo.textMesh != null) { buttonHintInfo.textMesh.text = buttonHintInfo.componentName; } this.centerPosition += buttonHintInfo.textStartAnchor.position; buttonHintInfo.textCanvas.transform.localScale = Vector3.Scale(buttonHintInfo.textCanvas.transform.localScale, this.player.transform.localScale); buttonHintInfo.textStartAnchor.transform.localScale = Vector3.Scale(buttonHintInfo.textStartAnchor.transform.localScale, this.player.transform.localScale); buttonHintInfo.textEndAnchor.transform.localScale = Vector3.Scale(buttonHintInfo.textEndAnchor.transform.localScale, this.player.transform.localScale); buttonHintInfo.line.transform.localScale = Vector3.Scale(buttonHintInfo.line.transform.localScale, this.player.transform.localScale); }