public bool TryGetValidTooltipRig(ControllerButton button, out TooltipRig rig) { rig = default(TooltipRig); if (!EnumArrayBase <ControllerButton> .StaticIsValidIndex((int)button)) { return(false); } var model = VRModule.GetDeviceState(m_viveRole.GetDeviceIndex()).deviceModel; var rigSetAsset = (TooltipRigAsset)null; if (m_customTooltipRigSet != null) { rigSetAsset = m_customTooltipRigSet[(int)model]; } if (rigSetAsset != null || TooltipRigAsset.TryGetDefaultAsset(model, out rigSetAsset)) { var entries = rigSetAsset.rigEntries; if (entries != null && entries.Count > 0) { for (int i = 0, imax = entries.Count; i < imax; ++i) { var entry = entries[i]; if (entry.button == button) { rig = entry.tooltipRig; return(true); } } } } return(false); }
protected override void OnShowTooltip(ControllerButton button, TooltipRig rig, DefaultTooltipRenderData data, bool wasVisible) { var prefabClone = CloneOrGetPrefab(button); if (prefabClone != null) { prefabClone.gameObject.SetActive(true); prefabClone.ShowRenderData(rig, data); } }
public void ShowRenderData(TooltipRig tooltipRig, DefaultTooltipRenderData data) { lineOrigin.gameObject.SetActive(true); lineEnd.gameObject.SetActive(true); labelOrigin.gameObject.SetActive(true); var start = tooltipRig.buttonPosition + 0.005f * tooltipRig.buttonNormal; var end = tooltipRig.labelPosition; var lineVector = end - start; lineOrigin.localPosition = start; lineOrigin.localRotation = Quaternion.LookRotation(lineVector); lineCylinder.localScale = new Vector3(1f, 1f, lineVector.magnitude); lineEnd.localPosition = end; labelOrigin.localPosition = tooltipRig.labelPosition; labelOrigin.localRotation = Quaternion.LookRotation(tooltipRig.labelNormal, tooltipRig.labelUp); if (labelText != null) { labelText.text = data.labelText; } if (labelTextMesh != null) { labelTextMesh.text = data.labelText; } switch (tooltipRig.labelAnchor) { case TextAnchor.UpperLeft: labelAnchor.localPosition = new Vector3(labelWidth * 0.5f, -labelHeight * 0.5f, 0f); break; case TextAnchor.UpperCenter: labelAnchor.localPosition = new Vector3(0f, -labelHeight * 0.5f, 0f); break; case TextAnchor.UpperRight: labelAnchor.localPosition = new Vector3(-labelWidth * 0.5f, -labelHeight * 0.5f, 0f); break; case TextAnchor.MiddleLeft: labelAnchor.localPosition = new Vector3(labelWidth * 0.5f, 0f, 0f); break; case TextAnchor.MiddleCenter: labelAnchor.localPosition = new Vector3(0f, 0f, 0f); break; case TextAnchor.MiddleRight: labelAnchor.localPosition = new Vector3(-labelWidth * 0.5f, 0f, 0f); break; case TextAnchor.LowerLeft: labelAnchor.localPosition = new Vector3(labelWidth * 0.5f, labelHeight * 0.5f, 0f); break; case TextAnchor.LowerCenter: labelAnchor.localPosition = new Vector3(0f, labelHeight * 0.5f, 0f); break; case TextAnchor.LowerRight: labelAnchor.localPosition = new Vector3(-labelWidth * 0.5f, labelHeight * 0.5f, 0f); break; } //var start = tooltipRig.buttonPosition + 0.005f * tooltipRig.buttonNormal; //var end = tooltipRig.labelPosition - 0.005f * tooltipRig.labelNormal; //var lineVector = end - start; //var labelForward = -tooltipRig.labelNormal; //lineOrigin.localPosition = start; //lineOrigin.localRotation = Quaternion.LookRotation(lineVector); //lineCylinder.localScale = new Vector3(1f, 1f, lineVector.magnitude); //lineEnd.localPosition = end; //labelOrigin.localPosition = tooltipRig.labelPosition; //labelOrigin.localRotation = Quaternion.LookRotation(labelForward, Vector3.forward); //if (labelText != null) { labelText.text = data.labelText; } //if (labelTextMesh != null) { labelTextMesh.text = data.labelText; } }