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); }
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); }
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); }
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); }
public abstract bool Raycast(Ray ray, out Octave3DColliderRayHit colliderRayHit);