Update GetComponents for IEnumerable (#18395)
This commit is contained in:
@@ -33,9 +33,8 @@ namespace Content.Server.Administration.Commands
|
|||||||
|
|
||||||
var i = 0;
|
var i = 0;
|
||||||
|
|
||||||
foreach (var component in components)
|
foreach (var (uid, component) in components)
|
||||||
{
|
{
|
||||||
var uid = component.Owner;
|
|
||||||
entityManager.RemoveComponent(uid, component);
|
entityManager.RemoveComponent(uid, component);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace Content.Server.Administration.Commands
|
|||||||
|
|
||||||
var entityManager = IoCManager.Resolve<IEntityManager>();
|
var entityManager = IoCManager.Resolve<IEntityManager>();
|
||||||
|
|
||||||
var entitiesWithComponents = components.Select(c => entityManager.GetAllComponents(c).Select(x => x.Owner));
|
var entitiesWithComponents = components.Select(c => entityManager.GetAllComponents(c).Select(x => x.Uid));
|
||||||
var entitiesWithAllComponents = entitiesWithComponents.Skip(1).Aggregate(new HashSet<EntityUid>(entitiesWithComponents.First()), (h, e) => { h.IntersectWith(e); return h; });
|
var entitiesWithAllComponents = entitiesWithComponents.Skip(1).Aggregate(new HashSet<EntityUid>(entitiesWithComponents.First()), (h, e) => { h.IntersectWith(e); return h; });
|
||||||
|
|
||||||
var count = 0;
|
var count = 0;
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace Content.Server.Administration.Commands
|
|||||||
var entityManager = IoCManager.Resolve<IEntityManager>();
|
var entityManager = IoCManager.Resolve<IEntityManager>();
|
||||||
var entityIds = new HashSet<string>();
|
var entityIds = new HashSet<string>();
|
||||||
|
|
||||||
var entitiesWithComponents = components.Select(c => entityManager.GetAllComponents(c).Select(x => x.Owner)).ToArray();
|
var entitiesWithComponents = components.Select(c => entityManager.GetAllComponents(c).Select(x => x.Uid)).ToArray();
|
||||||
var entitiesWithAllComponents = entitiesWithComponents.Skip(1).Aggregate(new HashSet<EntityUid>(entitiesWithComponents.First()), (h, e) => { h.IntersectWith(e); return h; });
|
var entitiesWithAllComponents = entitiesWithComponents.Skip(1).Aggregate(new HashSet<EntityUid>(entitiesWithComponents.First()), (h, e) => { h.IntersectWith(e); return h; });
|
||||||
|
|
||||||
foreach (var entity in entitiesWithAllComponents)
|
foreach (var entity in entitiesWithAllComponents)
|
||||||
|
|||||||
@@ -13,9 +13,13 @@ public sealed class PinpointerSystem : SharedPinpointerSystem
|
|||||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||||
|
|
||||||
|
private EntityQuery<TransformComponent> _xformQuery;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
_xformQuery = GetEntityQuery<TransformComponent>();
|
||||||
|
|
||||||
SubscribeLocalEvent<PinpointerComponent, ActivateInWorldEvent>(OnActivate);
|
SubscribeLocalEvent<PinpointerComponent, ActivateInWorldEvent>(OnActivate);
|
||||||
SubscribeLocalEvent<FTLCompletedEvent>(OnLocateTarget);
|
SubscribeLocalEvent<FTLCompletedEvent>(OnLocateTarget);
|
||||||
}
|
}
|
||||||
@@ -71,7 +75,7 @@ public sealed class PinpointerSystem : SharedPinpointerSystem
|
|||||||
{
|
{
|
||||||
if (!EntityManager.ComponentFactory.TryGetRegistration(component.Component, out var reg))
|
if (!EntityManager.ComponentFactory.TryGetRegistration(component.Component, out var reg))
|
||||||
{
|
{
|
||||||
Logger.Error($"Unable to find component registration for {component.Component} for pinpointer!");
|
Log.Error($"Unable to find component registration for {component.Component} for pinpointer!");
|
||||||
DebugTools.Assert(false);
|
DebugTools.Assert(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -100,10 +104,7 @@ public sealed class PinpointerSystem : SharedPinpointerSystem
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private EntityUid? FindTargetFromComponent(EntityUid uid, Type whitelist, TransformComponent? transform = null)
|
private EntityUid? FindTargetFromComponent(EntityUid uid, Type whitelist, TransformComponent? transform = null)
|
||||||
{
|
{
|
||||||
var xformQuery = GetEntityQuery<TransformComponent>();
|
_xformQuery.Resolve(uid, ref transform, false);
|
||||||
|
|
||||||
if (transform == null)
|
|
||||||
xformQuery.TryGetComponent(uid, out transform);
|
|
||||||
|
|
||||||
if (transform == null)
|
if (transform == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -111,15 +112,15 @@ public sealed class PinpointerSystem : SharedPinpointerSystem
|
|||||||
// sort all entities in distance increasing order
|
// sort all entities in distance increasing order
|
||||||
var mapId = transform.MapID;
|
var mapId = transform.MapID;
|
||||||
var l = new SortedList<float, EntityUid>();
|
var l = new SortedList<float, EntityUid>();
|
||||||
var worldPos = _transform.GetWorldPosition(transform, xformQuery);
|
var worldPos = _transform.GetWorldPosition(transform);
|
||||||
|
|
||||||
foreach (var comp in EntityManager.GetAllComponents(whitelist))
|
foreach (var (otherUid, _) in EntityManager.GetAllComponents(whitelist))
|
||||||
{
|
{
|
||||||
if (!xformQuery.TryGetComponent(comp.Owner, out var compXform) || compXform.MapID != mapId)
|
if (!_xformQuery.TryGetComponent(otherUid, out var compXform) || compXform.MapID != mapId)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var dist = (_transform.GetWorldPosition(compXform, xformQuery) - worldPos).LengthSquared();
|
var dist = (_transform.GetWorldPosition(compXform) - worldPos).LengthSquared();
|
||||||
l.TryAdd(dist, comp.Owner);
|
l.TryAdd(dist, otherUid);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return uid with a smallest distance
|
// return uid with a smallest distance
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ public abstract class StationEventSystem<T> : GameRuleSystem<T> where T : Compon
|
|||||||
filter ??= _ => true;
|
filter ??= _ => true;
|
||||||
|
|
||||||
// augh. sorry sloth there's no better API and my goal today isn't adding 50 entitymanager methods :waa:
|
// augh. sorry sloth there's no better API and my goal today isn't adding 50 entitymanager methods :waa:
|
||||||
var stations = EntityManager.GetAllComponents(typeof(StationEventEligibleComponent)).Select(x => x.Owner).Where(filter).ToArray();
|
var stations = EntityManager.GetAllComponents(typeof(StationEventEligibleComponent)).Select(x => x.Uid).Where(filter).ToArray();
|
||||||
|
|
||||||
if (stations.Length == 0)
|
if (stations.Length == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user