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