mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-07 22:13:40 -04:00
Added buildout load range to the awareness, capped at 1024m
This commit is contained in:
@@ -13,7 +13,7 @@ import resources.objects.quadtree.QuadTree;
|
||||
|
||||
public class ObjectAwareness {
|
||||
|
||||
private static final double AWARE_RANGE = 200;
|
||||
private static final double AWARE_RANGE = 1024;
|
||||
|
||||
private final Map <Terrain, QuadTree <SWGObject>> quadTree;
|
||||
|
||||
@@ -60,6 +60,8 @@ public class ObjectAwareness {
|
||||
}
|
||||
|
||||
public void update(SWGObject obj) {
|
||||
if (obj.isBuildout())
|
||||
return;
|
||||
Location l = obj.getLocation();
|
||||
if (invalidLocation(l))
|
||||
return;
|
||||
@@ -68,7 +70,7 @@ public class ObjectAwareness {
|
||||
synchronized (tree) {
|
||||
List <SWGObject> range = tree.getWithinRange(l.getX(), l.getZ(), AWARE_RANGE);
|
||||
for (SWGObject inRange : range) {
|
||||
if (isValidInRange(obj, inRange))
|
||||
if (isValidInRange(obj, inRange, l))
|
||||
objectAware.add(inRange);
|
||||
}
|
||||
}
|
||||
@@ -83,12 +85,26 @@ public class ObjectAwareness {
|
||||
return l == null || l.getTerrain() == null;
|
||||
}
|
||||
|
||||
private boolean isValidInRange(SWGObject obj, SWGObject inRange) {
|
||||
private boolean isValidInRange(SWGObject obj, SWGObject inRange, Location objLoc) {
|
||||
if (inRange.getObjectId() == obj.getObjectId())
|
||||
return false;
|
||||
if (inRange instanceof CreatureObject && inRange.getOwner() == null)
|
||||
return false;
|
||||
Location inRangeLoc = inRange.getLocation();
|
||||
double distSquared = distanceSquared(objLoc, inRangeLoc);
|
||||
if (inRange.getLoadRange() != 0 && distSquared > square(inRange.getLoadRange()))
|
||||
return false;
|
||||
if (inRange.getLoadRange() == 0 && distSquared > 200)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private double distanceSquared(Location l1, Location l2) {
|
||||
return square(l1.getX()-l2.getX()) + square(l1.getY()-l2.getY()) + square(l1.getZ()-l2.getZ());
|
||||
}
|
||||
|
||||
private double square(double x) {
|
||||
return x * x;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user