Remove ActorMap.ActorsInWorld.

Prefer the more direct and efficient query on World.Actors instead.
This commit is contained in:
RoosterDragon
2015-11-28 21:42:06 +00:00
parent 912a0630e2
commit c0286bb147
3 changed files with 2 additions and 7 deletions

View File

@@ -559,10 +559,5 @@ namespace OpenRA.Traits
}
}
}
public IEnumerable<Actor> ActorsInWorld()
{
return bins.SelectMany(bin => bin.Actors.Where(actor => actor.IsInWorld));
}
}
}

View File

@@ -291,7 +291,7 @@ namespace OpenRA.Widgets
static IEnumerable<Actor> SelectActorsInWorld(World world, IEnumerable<string> selectionClasses, Player player)
{
return SelectActorsByOwnerAndSelectionClass(world.ActorMap.ActorsInWorld(), player, selectionClasses);
return SelectActorsByOwnerAndSelectionClass(world.Actors.Where(a => a.IsInWorld), player, selectionClasses);
}
static IEnumerable<Actor> SelectActorsByOwnerAndSelectionClass(IEnumerable<Actor> actors, Player owner, IEnumerable<string> selectionClasses)

View File

@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Scripting
if (!Context.World.Map.Rules.Actors.TryGetValue(type, out ai))
throw new LuaException("Unknown actor type '{0}'".F(type));
result.AddRange(Player.World.ActorMap.ActorsInWorld()
result.AddRange(Player.World.Actors
.Where(actor => actor.Owner == Player && !actor.IsDead && actor.IsInWorld && actor.Info.Name == ai.Name));
return result.ToArray();