Ejemplo n.º 1
0
        AnalyzationResult AnalyzeQuad(GUIQuad quad)
        {
            var result = new AnalyzationResult();

            var quadCollider = quad.GetComponent <Collider>();

            if (quadCollider == null)
            {
                return(result);
            }

            var normal = -quad.transform.forward;
            var pos    = quad.transform.position;
            var tip    = TipPosition;

            bool behind = Vector3.Dot(tip - pos, normal) < 0;

            // We're on the right side
            var        dir    = -normal;
            var        origin = !behind ? tip : pos + Vector3.Reflect(tip - pos, normal);
            RaycastHit hitInfo;

            if (quadCollider.Raycast(new Ray(origin, dir), out hitInfo, 1.5f))
            {
                var maxHeight = behind ? MAX_DEPTH : HOVER_HEIGHT;

                if (hitInfo.distance <= maxHeight)
                {
                    // IN!
                    result.Position = behind ? RelativePosition.Behind : RelativePosition.Hover;
                }

                result.TextureCoords = hitInfo.textureCoord;
            }
            else
            {
                // OUT!
                result.Position = RelativePosition.Out;
            }



            //VRLog.Error(closestPoint);

            //RaycastHit hitInfo;
            //if(quadCollider.Raycast(new Ray(tip, (tip - closestPoint).normalized ), out hitInfo, 1.5f))
            //{
            //    result.TextureCoords = hitInfo.textureCoord;
            //} else
            //{
            //    VRLog.Error("Raycast missed its target!");
            //}


            return(result);
        }
Ejemplo n.º 2
0
 private void EnsureResizeHandler()
 {
     if (!_ResizeHandler)
     {
         _ResizeHandler = _Target.GetComponent <ResizeHandler>();
         if (!_ResizeHandler)
         {
             _ResizeHandler = _Target.gameObject.AddComponent <ResizeHandler>();
         }
     }
 }
Ejemplo n.º 3
0
        private bool Raycast(GUIQuad quad, out RaycastHit hit)
        {
            Vector3  position  = Laser.transform.position;
            Vector3  forward   = Laser.transform.forward;
            Collider component = quad.GetComponent <Collider>();

            if (component)
            {
                var ray = new Ray(position, forward);
                return(component.Raycast(ray, out hit, GetRange(quad)));
            }
            hit = default;
            return(false);
        }
Ejemplo n.º 4
0
        private bool Raycast(GUIQuad quad, out RaycastHit hit)
        {
            var myPos    = Laser.transform.position;
            var laser    = Laser.transform.forward;
            var collider = quad.GetComponent <Collider>();

            if (collider)
            {
                var ray = new Ray(myPos, laser);
                // So far so good. Now raycast!
                return(collider.Raycast(ray, out hit, GetRange(quad)));
            }
            else
            {
                hit = new RaycastHit();
                return(false);
            }
        }