示例#1
0
        private bool IsPointingAtPanel(VrDebugPanel panel)
        {
            float angle = Vector3.Angle(targetHand.transform.forward, panel.center.forward);
            float dot   = Vector3.Dot(targetHand.transform.forward, panel.center.forward);

            return(Mathf.Abs(angle) < 30.0f && dot < 0.0f);
        }
示例#2
0
        private float CalcOpacity(VrDebugPanel panel)
        {
            float distance = (this.transform.position - panel.center.position).magnitude;

            distance = Mathf.Clamp(distance, 0.0f, 1.0f);

            return(distance);
        }
示例#3
0
        // use screen midpoint as locked pointer location, enabling look location to be the "mouse"
        private bool GetLookPointerEventData(int index)
        {
            if (PointEvents[index] == null)
            {
                PointEvents[index] = new PointerEventData(base.eventSystem);
            }
            else
            {
                PointEvents[index].Reset();
            }

            PointEvents[index].delta       = Vector2.zero;
            PointEvents[index].position    = new Vector2(Screen.width / 2, Screen.height / 2);
            PointEvents[index].scrollDelta = Vector2.zero;

            Ray ray = ControllerCamera.ScreenPointToRay(PointEvents[index].position);

            LastRays [index] = ray;

            base.eventSystem.RaycastAll(PointEvents[index], m_RaycastResultCache);

            if (ignoreOverlayCanvases)
            {
                // Search through the raycast results and discard any that are actually on an overlay canvas

                for (int i = m_RaycastResultCache.Count - 1; i >= 0; i--)
                {
                    Canvas objCanvas = FindParentCanvas(m_RaycastResultCache[i].gameObject);
                    if (objCanvas != null && (objCanvas.renderMode == RenderMode.ScreenSpaceOverlay || objCanvas.renderMode == RenderMode.ScreenSpaceCamera))
                    {
                        m_RaycastResultCache.RemoveAt(i);
                    }
                    else if (objCanvas.transform.parent != null)
                    {
                        // Hack: Remove any hits that aren't part of one of our debug panels

                        GameObject   canvasParent = objCanvas.transform.parent.gameObject;
                        VrDebugPanel debugPanel   = canvasParent.GetComponent <VrDebugPanel>();
                        if (debugPanel == null)
                        {
                            m_RaycastResultCache.RemoveAt(i);
                        }
                    }
                }
            }

            PointEvents[index].pointerCurrentRaycast = FindFirstRaycast(m_RaycastResultCache);
            if (PointEvents[index].pointerCurrentRaycast.gameObject != null)
            {
                guiHit = true;                 //gets set to false at the beginning of the process event
            }

            m_RaycastResultCache.Clear();

            return(true);
        }