Exemplo n.º 1
0
            /// @endcond

            private void CastRayFromGaze()
            {
                //Vector2 headPose = NormalizedCartesianToSpherical(GvrViewer.Instance.HeadPose.Orientation*Vector3.forward);

                if (pointerData == null)
                {
                    pointerData            = new VRPointerEventData(eventSystem);
                    pointerData.controller = m_Controller;
                    //lastHeadPose=headPose;
                }

                // Cast a ray into the scene
                pointerData.Reset();
                pointerData.position = new Vector2(hotspot.x * Screen.width, hotspot.y * Screen.height);
                //eventSystem.RaycastAll(pointerData,m_RaycastResultCache);
                VRRaycaster caster = VRRaycaster.TryRaycastAll(m_ControllerName, pointerData, m_RaycastResultCache);

                pointerData.pointerCurrentRaycast = FindFirstRaycast(m_RaycastResultCache);
                m_RaycastResultCache.Clear();
                //
                if (caster != null)
                {
                    RaycastResult rr = pointerData.pointerCurrentRaycast;
                    if (rr.gameObject == null)
                    {
                        caster.SetLaserLineDepth(100f);
                    }
                    else
                    {
                        caster.SetLaserLineDepth(rr.distance);
                    }
                }
                //pointerData.delta=headPose-lastHeadPose;
                //lastHeadPose=headPose;
            }
Exemplo n.º 2
0
        public static VRRaycaster TryRaycastAll(string name, PointerEventData eventData, List <RaycastResult> raycastResults)
        {
            raycastResults.Clear();
            VRRaycaster raycaster = null;

            if (s_InstanceMap.TryGetValue(name, out raycaster))
            {
                int i = 0, imax = s_AllCanvases.Count;
                if (imax == 0)
                {
                    s_AllCanvases.AddRange(FindObjectsOfType <Canvas>());
                    s_AllCanvases.RemoveAll((x) => {
                        BaseRaycaster br = x.GetComponent <BaseRaycaster>();
                        return(br == null || br is VRRaycaster);
                    });
                    imax = s_AllCanvases.Count;
                }
                if (imax == 0)
                {
                    raycaster.PhysicsRaycast(eventData, raycastResults);
                }
                else
                {
                    for (; i < imax; ++i)
                    {
                        raycaster.SetCanvas(s_AllCanvases[i]);
                        raycaster.Raycast(eventData, raycastResults);
                    }
                }
            }
            else
            {
                //Log.w("VRRaycaster","No such a VRRaycaster(name="+name+") at TryRaycastAll().");
            }
            return(raycaster);
        }