Пример #1
0
 public virtual void OnPointerOut(TTSPointerEventArgs e)
 {
     if (PointerOut != null)
     {
         PointerOut(this, e);
     }
 }
Пример #2
0
 public virtual void OnPointStay(TTSPointerEventArgs e)
 {
     if (PointerStay != null)
     {
         PointerStay(this, e);
     }
 }
Пример #3
0
    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 = "";
            }
        }
    }
Пример #4
0
 private void HandlePointerIn(object sender, TTSPointerEventArgs e)
 {
 }
Пример #5
0
    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);
    }