diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index ea3021af6..076eea682 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -312,31 +312,37 @@ public class CreatureObject extends TangibleObject { sendSceneCreateObject(target); BaselineBuilder bb = null; - - bb = new BaselineBuilder(this, BaselineType.CREO, 1); - createBaseline1(target, bb); - bb.sendTo(target); + + if (getOwner() == target) { + bb = new BaselineBuilder(this, BaselineType.CREO, 1); + createBaseline1(target, bb); + bb.sendTo(target); + } bb = new BaselineBuilder(this, BaselineType.CREO, 3); createBaseline3(target, bb); bb.sendTo(target); - bb = new BaselineBuilder(this, BaselineType.CREO, 4); - createBaseline4(target, bb); - bb.sendTo(target); + if (getOwner() == target) { + bb = new BaselineBuilder(this, BaselineType.CREO, 4); + createBaseline4(target, bb); + bb.sendTo(target); + } bb = new BaselineBuilder(this, BaselineType.CREO, 6); createBaseline6(target, bb); bb.sendTo(target); - - bb = new BaselineBuilder(this, BaselineType.CREO, 8); - createBaseline8(target, bb); - bb.sendTo(target); - bb = new BaselineBuilder(this, BaselineType.CREO, 9); - createBaseline9(target, bb); - bb.sendTo(target); - + if (getOwner() == target) { + bb = new BaselineBuilder(this, BaselineType.CREO, 8); + createBaseline8(target, bb); + bb.sendTo(target); + + bb = new BaselineBuilder(this, BaselineType.CREO, 9); + createBaseline9(target, bb); + bb.sendTo(target); + } + createChildrenObjects(target); target.sendPacket(new SceneEndBaselines(getObjectId())); diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java index 390a4052d..be5570355 100644 --- a/src/resources/objects/player/PlayerObject.java +++ b/src/resources/objects/player/PlayerObject.java @@ -113,13 +113,15 @@ public class PlayerObject extends IntangibleObject { createBaseline6(target, bb); bb.sendTo(target); - bb = new BaselineBuilder(this, BaselineType.PLAY, 8); - createBaseline8(target, bb); - bb.sendTo(target); - - bb = new BaselineBuilder(this, BaselineType.PLAY, 9); - createBaseline9(target, bb); - bb.sendTo(target); + if (getOwner() == target) { + bb = new BaselineBuilder(this, BaselineType.PLAY, 8); + createBaseline8(target, bb); + bb.sendTo(target); + + bb = new BaselineBuilder(this, BaselineType.PLAY, 9); + createBaseline9(target, bb); + bb.sendTo(target); + } createChildrenObjects(target); target.sendPacket(new SceneEndBaselines(getObjectId())); diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 2c7e541a0..c41b9051f 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -134,13 +134,15 @@ public class TangibleObject extends SWGObject { createBaseline6(target, bb); bb.sendTo(target); - bb = new BaselineBuilder(this, BaselineType.TANO, 8); - createBaseline8(target, bb); - bb.sendTo(target); - - bb = new BaselineBuilder(this, BaselineType.TANO, 9); - createBaseline9(target, bb); - bb.sendTo(target); + if (getOwner() == target) { + bb = new BaselineBuilder(this, BaselineType.TANO, 8); + createBaseline8(target, bb); + bb.sendTo(target); + + bb = new BaselineBuilder(this, BaselineType.TANO, 9); + createBaseline9(target, bb); + bb.sendTo(target); + } createChildrenObjects(target); target.sendPacket(new SceneEndBaselines(getObjectId())); diff --git a/src/services/CoreManager.java b/src/services/CoreManager.java index 2a4b37ce7..6afe85460 100644 --- a/src/services/CoreManager.java +++ b/src/services/CoreManager.java @@ -18,7 +18,7 @@ import services.galaxy.GalacticManager; public class CoreManager extends Manager { - private static final int galaxyId = 1; + private static final int galaxyId = 2; private EngineManager engineManager; private GalacticManager galacticManager; @@ -55,15 +55,15 @@ public class CoreManager extends Manager { @Override public void onIntentReceived(Intent i) { if (i instanceof InboundPacketIntent) { - /*InboundPacketIntent in = (InboundPacketIntent) i; + InboundPacketIntent in = (InboundPacketIntent) i; System.out.println("IN " + in.getNetworkId() + ":" + in.getServerType() + "\t" + in.getPacket().getClass().getSimpleName()); if (in.getPacket() instanceof DataChannelA) { for (SWGPacket p : ((DataChannelA) in.getPacket()).getPackets()) { System.out.println(" " + p.getClass().getSimpleName()); } - }*/ + } } else if (i instanceof OutboundPacketIntent) { - /*OutboundPacketIntent out = (OutboundPacketIntent) i; + OutboundPacketIntent out = (OutboundPacketIntent) i; System.out.println("OUT " + out.getNetworkId() + " \t" + out.getPacket().getClass().getSimpleName()); if (out.getPacket() instanceof DataChannelA) { for (SWGPacket p : ((DataChannelA) out.getPacket()).getPackets()) { @@ -72,7 +72,7 @@ public class CoreManager extends Manager { else System.out.println(" " + p.getClass().getSimpleName()); } - }*/ + } } } diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index 091255b0b..1e2d9278c 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -49,12 +49,12 @@ public class ObjectManager extends Manager { private ClientFactory clientFac; private ObjectDatabase objects; - private Map > quadTree; + private Map > quadTree; private long maxObjectId; public ObjectManager() { objects = new ObjectDatabase("odb/objects.db"); - quadTree = new HashMap>(); + quadTree = new HashMap>(); maxObjectId = 1; } @@ -63,7 +63,7 @@ public class ObjectManager extends Manager { registerForIntent(SWGObjectEventIntent.TYPE); registerForIntent(GalacticPacketIntent.TYPE); for (Terrain t : Terrain.values()) { - quadTree.put(t.getFile(), new QuadTree(-5000, -5000, 5000, 5000)); + quadTree.put(t, new QuadTree(-5000, -5000, 5000, 5000)); } objects.loadToCache(); long startLoad = System.nanoTime(); @@ -73,7 +73,7 @@ public class ObjectManager extends Manager { public void process(SWGObject obj) { Location l = obj.getLocation(); if (l.getTerrain() != null) { - QuadTree tree = quadTree.get(l.getTerrain().getFile()); + QuadTree tree = quadTree.get(l.getTerrain()); if (tree != null) { tree.put(l.getX(), l.getZ(), obj); } else { @@ -154,21 +154,25 @@ public class ObjectManager extends Manager { if (oldLocation != null && oldLocation.getTerrain() != null) { // Remove from QuadTree x = oldLocation.getX(); y = oldLocation.getZ(); - quadTree.get(oldLocation.getTerrain().getFile()).remove(x, y, obj); + if (!quadTree.get(oldLocation.getTerrain()).remove(x, y, obj)) + System.err.println("Failed to remove previous object from QuadTree!"); } if (newLocation != null && newLocation.getTerrain() != null) { // Add to QuadTree, update awareness obj.setLocation(newLocation); x = newLocation.getX(); y = newLocation.getZ(); - QuadTree tree = quadTree.get(newLocation.getTerrain().getFile()); - tree.put(x, y, obj); + QuadTree tree = quadTree.get(newLocation.getTerrain()); for (SWGObject inRange : tree.getWithinRange(x, y, AWARE_RANGE)) { - if (inRange.getOwner() != null && inRange.getObjectId() != obj.getObjectId() && inRange.getOwner() != obj.getOwner()) + if (inRange.getOwner() != null && inRange.getObjectId() != obj.getObjectId()) { + inRange.addToAwareness(obj.getOwner()); updatedAware.add(inRange.getOwner()); + } } + tree.put(x, y, obj); } System.out.println("Now Aware Of: " + Arrays.toString(updatedAware.toArray(new Player[updatedAware.size()]))); obj.updateAwareness(updatedAware); + obj.sendDataTransforms(); } private void addObjectAttributes(SWGObject obj, String template) { @@ -208,10 +212,12 @@ public class ObjectManager extends Manager { System.err.println("ObjectManager: Failed to start zone - CreatureObject could not be fetched from database"); throw new NullPointerException("CreatureObject for ID: " + characterId + " cannot be null!"); } + creature.setOwner(player); player.setCreatureObject(creature); for (SWGObject obj : creature.getChildren()) { if (obj instanceof PlayerObject) { player.setPlayerObject(obj); + obj.setOwner(player); break; } }