switch (query)
{
case ComponentQuery compQuery:
- foreach (var ent in _lookup.GetEntitiesInRange(owner, vision))
+ var mapPos = Transform(owner).MapPosition;
+ foreach (var compReg in compQuery.Components.Values)
{
- foreach (var comp in compQuery.Components.Values)
+ foreach (var comp in _lookup.GetComponentsInRange(compReg.Component.GetType(), mapPos, vision))
{
- if (!HasComp(ent, comp.Component.GetType()))
+ var ent = comp.Owner;
+
+ if (ent == owner)
continue;
entities.Add(ent);
var xformQuery = GetEntityQuery<TransformComponent>();
var xform = xformQuery.GetComponent(uid);
- var comp = EntityManager.ComponentFactory.GetRegistration(component.Component).Type;
+ var compType = EntityManager.ComponentFactory.GetRegistration(component.Component).Type;
float? closestDistance = null;
- foreach (var targetXform in _entityLookup.GetComponentsInRange<TransformComponent>(xform.MapPosition, component.MaximumDistance))
+ foreach (var comp in _entityLookup.GetComponentsInRange(compType, xform.MapPosition, component.MaximumDistance))
{
// forgive me father, for i have sinned.
- var ent = targetXform.Owner;
+ var ent = comp.Owner;
- if (!HasComp(ent, comp))
- continue;
-
- var dist = (_transform.GetWorldPosition(xform, xformQuery) - _transform.GetWorldPosition(targetXform, xformQuery)).Length;
+ var dist = (_transform.GetWorldPosition(xform, xformQuery) - _transform.GetWorldPosition(ent, xformQuery)).Length;
if (dist >= (closestDistance ?? float.MaxValue))
continue;
closestDistance = dist;