Exemple #1
0
        public OrientedBoxRayHit(Ray ray, float hitEnter, OrientedBox hitBox)
        {
            _ray         = ray;
            _hitEnter    = hitEnter;
            _hitBox      = new OrientedBox(hitBox);
            _hitCollider = new Octave3DBoxCollider(_hitBox);
            _hitPoint    = ray.GetPoint(hitEnter);

            _hitFace   = hitBox.GetBoxFaceClosestToPoint(_hitPoint);
            _hitNormal = hitBox.GetBoxFacePlane(_hitFace).normal;

            CorrectHitDataForThinPlanes();
        }
        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);
        }