private IEnumerable <Player> GetNearEnemyCore(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)); var nearEnemyCore = positions.Any(position => position.Point.DistanceTo(replayHelper.GetEnemySpawn(unit, replay)) <= settings.MaxDistanceToCore); if (nearEnemyCore) { logger.LogDebug($"GetNearEnemyCore: {unit.PlayerControlledBy.HeroId}"); yield return(unit.PlayerControlledBy); } } }