diff --git a/src/resources/objects/SWGObject.java b/src/resources/objects/SWGObject.java index afb39d04..4b90426a 100644 --- a/src/resources/objects/SWGObject.java +++ b/src/resources/objects/SWGObject.java @@ -751,8 +751,9 @@ public abstract class SWGObject implements Serializable, Comparable { } } - public void updateObjectAwareness(List withinRange) { + public void updateObjectAwareness(Set withinRange) { synchronized (objectsAware) { + withinRange.addAll(getObservers()); Set outOfRange = new HashSet<>(objectsAware); outOfRange.removeAll(withinRange); for (SWGObject o : outOfRange) { diff --git a/src/services/objects/ObjectAwareness.java b/src/services/objects/ObjectAwareness.java index 2caf69b0..aec2fe61 100644 --- a/src/services/objects/ObjectAwareness.java +++ b/src/services/objects/ObjectAwareness.java @@ -28,9 +28,11 @@ package services.objects; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; import network.packets.swg.zone.UpdateContainmentMessage; import resources.Location; @@ -139,7 +141,7 @@ public class ObjectAwareness { Location l = obj.getWorldLocation(); if (invalidLocation(l)) return; - List objectAware = new LinkedList(); + Set objectAware = new HashSet(); QuadTree tree = getTree(l); synchronized (tree) { List range = tree.getWithinRange(l.getX(), l.getZ(), AWARE_RANGE);