private IEnumerable <Player> GetNearAllyCore(TimeSpan start, TimeSpan end, Replay replay) { foreach (Unit unit in replay.Players.SelectMany(p => p.HeroUnits.Where(unit => replayHelper.IsAlive(unit, start, end)))) { IEnumerable <Position> positions = unit.Positions.Where(position => replayHelper.IsWithin(position.TimeSpan, start, end)); bool nearOwnCore = positions.Any(position => position.Point.DistanceTo(replayHelper.GetSpawn(unit)) <= settings.MaxDistanceToCore); if (nearOwnCore) { logger.LogDebug($"GetNearAllyCore: {unit.PlayerControlledBy.HeroId}"); yield return(unit.PlayerControlledBy); } } }