public virtual void OnPointerOut(TTSPointerEventArgs e) { if (PointerOut != null) { PointerOut(this, e); } }
public virtual void OnPointStay(TTSPointerEventArgs e) { if (PointerStay != null) { PointerStay(this, e); } }
private void HandlePointerStay(object sender, TTSPointerEventArgs e) { if (objectDescription) { currentObj = getDescription(e.target.gameObject.transform); if (currentObj != null && e.target.gameObject != priorGameObject) { Debug.Log("described: " + currentObj); var thread = new Thread(() => { WindowsVoice.theVoice.speakVoice(currentObj); }); thread.Start(); priorObj = currentObj; priorGameObject = e.target.gameObject; } } if (TextToSpeech) { Text text = e.target.gameObject.GetComponent <Text>(); if (text != null) { currentContent = text.text; if (priorContent != currentContent) { Debug.Log("text: " + currentContent); var thread = new Thread(() => { WindowsVoice.theVoice.speakVoice(currentContent); }); thread.Start(); print(text.text + " " + text.gameObject.name + " " + text.gameObject.transform.parent.name); priorContent = currentContent; } return; } text = e.target.gameObject.GetComponentInChildren <Text>(); if (text != null) { currentContent = text.text; if (priorContent != currentContent) { Debug.Log("text: " + currentContent); var thread = new Thread(() => { WindowsVoice.theVoice.speakVoice(currentContent); }); thread.Start(); priorContent = currentContent; } return; } if (text == null) { priorContent = ""; } } }
private void HandlePointerIn(object sender, TTSPointerEventArgs e) { }
void Update() { holder.transform.RotateAround(transform.position, transform.right, rotateAngle - priorRotate); priorRotate = rotateAngle; holder.transform.localPosition = new Vector3(0, shiftDistance, 0); if (!voiceComponent.TextToSpeech && !voiceComponent.objectDescription) { pointer.SetActive(false); return; } else { pointer.SetActive(true); } if (!isActive) { isActive = true; this.transform.GetChild(0).gameObject.SetActive(true); } float dist = 100f; Ray raycast = new Ray(holder.transform.position, pointer.transform.forward); RaycastHit hit; bool bHit = Physics.Raycast(raycast, out hit); if (previousContact && previousContact == hit.transform) { count++; if (count == 20) { TTSPointerEventArgs args = new TTSPointerEventArgs(); args.distance = hit.distance; args.flags = 0; args.target = previousContact; OnPointStay(args); } } else { count = 0; } if (previousContact && previousContact != hit.transform) { TTSPointerEventArgs args = new TTSPointerEventArgs(); args.distance = 0f; args.flags = 0; args.target = previousContact; OnPointerOut(args); previousContact = null; } if (bHit && previousContact != hit.transform) { TTSPointerEventArgs argsIn = new TTSPointerEventArgs(); argsIn.distance = hit.distance; argsIn.flags = 0; argsIn.target = hit.transform; OnPointerIn(argsIn); previousContact = hit.transform; } if (!bHit) { previousContact = null; } if (bHit && hit.distance < 100f) { dist = hit.distance; } if (SteamVR_Actions.seeingVR_default_MakeLaserThicker.stateDown) { pointer.transform.localScale = new Vector3(thickness * 5f, thickness * 5f, dist); } else { pointer.transform.localScale = new Vector3(thickness, thickness, dist); } pointer.transform.localPosition = new Vector3(0f, 0f, dist / 2f); }