From 6547fb9add8535f0c0c5e091b64dfb0ba6bd288a Mon Sep 17 00:00:00 2001 From: Waverunner Date: Mon, 15 Dec 2014 09:15:13 -0500 Subject: [PATCH] Added null checks to debug awareness problem with quadTree --- src/services/objects/ObjectManager.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index 5cf7638c4..ab180bd23 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -157,8 +157,18 @@ public class ObjectManager extends Manager { if (oldLocation != null && oldLocation.getTerrain() != null) { // Remove from QuadTree x = oldLocation.getX(); y = oldLocation.getZ(); - if (!quadTree.get(oldLocation.getTerrain()).remove(x, y, obj)) - System.err.println("Failed to remove previous object from QuadTree!"); + + if (quadTree.get(oldLocation.getTerrain()).get(x, y) != null) { + if (quadTree.get(oldLocation.getTerrain()).get(x, y) == obj) { + if (!quadTree.get(oldLocation.getTerrain()).remove(x, y, obj)) + System.err.println("Failed to remove previous object from QuadTree!"); + } else { + System.err.println("Expected a different SWGObject!"); + } + + } else { + System.err.println("Tried to get a null obj in the quadtree!"); + } } if (newLocation != null && newLocation.getTerrain() != null) { // Add to QuadTree, update awareness obj.setLocation(newLocation); @@ -171,7 +181,10 @@ public class ObjectManager extends Manager { updatedAware.add(inRange.getOwner()); } } - tree.put(x, y, obj); + quadTree.get(newLocation.getTerrain()).put(x, y, obj); + if (quadTree.get(newLocation.getTerrain()).get(x, y) == null) { + System.err.println("NULL OBJ PUT INTO TREE!"); + } } System.out.println("Now Aware Of: " + Arrays.toString(updatedAware.toArray(new Player[updatedAware.size()]))); obj.updateAwareness(updatedAware);