public RaycastResult Raycast(Vector2 rayStart, Vector2 rayEnd)
{
float closestFraction = float.PositiveInfinity;
RaycastResult closestHit = new RaycastResult();
PhysicsWorld.RayCast((Fixture fixture, Vector2 position, Vector2 normal, float fraction) =>
{
Entity hitEntity = null;
if (EntityIdByPhysicsBody.ContainsKey(fixture.Body))
{
hitEntity = Game.Match.World.EntityById(EntityIdByPhysicsBody[fixture.Body]);
}
if (fraction < closestFraction)
{
closestFraction = fraction;
closestHit = new RaycastResult
{
HasHit = true,
Position = position,
Normal = normal,
Entity = hitEntity
};
}
return fraction;
}, rayStart, rayEnd);
return closestHit;
}