Exemplo n.º 1
0
        public override bool Raycast(Ray ray, out Octave3DColliderRayHit colliderRayHit)
        {
            colliderRayHit = null;
            MeshRayHit meshRayHit = Mesh.Raycast(ray, _meshTransform);

            if (meshRayHit != null)
            {
                colliderRayHit = new Octave3DColliderRayHit(ray, meshRayHit.HitEnter, meshRayHit.HitPoint, meshRayHit.HitNormal, this);
            }

            return(colliderRayHit != null);
        }
Exemplo n.º 2
0
        public override bool Raycast(Ray ray, out Octave3DColliderRayHit colliderRayHit)
        {
            colliderRayHit = null;

            RaycastHit rayHit;

            if (_terrainCollider.Raycast(ray, out rayHit, float.MaxValue))
            {
                colliderRayHit = new Octave3DColliderRayHit(ray, rayHit.distance, rayHit.point, rayHit.normal, this);
            }

            return(colliderRayHit != null);
        }
Exemplo n.º 3
0
        public override bool Raycast(Ray ray, out Octave3DColliderRayHit colliderRayHit)
        {
            colliderRayHit = null;
            float t;

            if (_orientedBox.Raycast(ray, out t))
            {
                Vector3 hitPoint = ray.GetPoint(t);
                BoxFace faceWhichContainsHitPoint = _orientedBox.GetBoxFaceClosestToPoint(hitPoint);
                Vector3 hitNormal = _orientedBox.GetBoxFacePlane(faceWhichContainsHitPoint).normal;

                colliderRayHit = new Octave3DColliderRayHit(ray, t, hitPoint, hitNormal, this);
            }
            return(colliderRayHit != null);
        }
Exemplo n.º 4
0
        public bool RaycastBothDirections(Ray ray, out Octave3DColliderRayHit colliderRayHit)
        {
            const float originOffsetAlongReverseDirection = 0.001f;
            Ray         offsetRay = ray;

            offsetRay.origin -= offsetRay.direction * originOffsetAlongReverseDirection;

            if (Raycast(offsetRay, out colliderRayHit))
            {
                return(true);
            }
            else
            {
                offsetRay.direction = -offsetRay.direction;
                offsetRay.origin    = ray.origin - offsetRay.direction * originOffsetAlongReverseDirection;
                if (Raycast(offsetRay, out colliderRayHit))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 5
0
 public abstract bool Raycast(Ray ray, out Octave3DColliderRayHit colliderRayHit);