Example #1
0
 public static IEnumerable <RayTestCollision> RayTestAll(Ray ray, uint maxResults = DEFAULT_MAX_RAY_TEST_RESULTS)
 {
     if (ray.IsInfiniteLength)
     {
         ray = ray.WithLength(RAY_TEST_INF_LENGTH_ACTUAL);
     }
     return(PhysicsManager.RayTestAll(ray.StartPoint, ray.EndPoint.Value, maxResults)
            .OrderBy(rtcd => Vector3.DistanceSquared((Vector3)rtcd.Position, ray.StartPoint))
            .Select(rtcd => {
         lock (staticMutationLock) {
             return new RayTestCollision(entityList.FirstOrDefault(e => e.PhysicsBody == rtcd.BodyHandle) ?? entitiesToBeAdded.FirstOrDefault(e => e.PhysicsBody == rtcd.BodyHandle), (Vector3)rtcd.Position);
         }
     }));
 }