From 56759111c7693c172806d1a7d69dcda011b8a40e Mon Sep 17 00:00:00 2001 From: Obique PSWG Date: Mon, 11 Jan 2016 03:39:42 -0600 Subject: [PATCH] Improved delta sending and limited PostureUpdate packet to players --- src/resources/network/DeltaBuilder.java | 19 ++++++++++++++++--- src/resources/objects/SWGObject.java | 19 +++---------------- .../objects/creature/CreatureObject.java | 10 ++-------- .../objects/player/PlayerObject.java | 8 -------- 4 files changed, 21 insertions(+), 35 deletions(-) diff --git a/src/resources/network/DeltaBuilder.java b/src/resources/network/DeltaBuilder.java index 5ca019b76..6d02fe190 100644 --- a/src/resources/network/DeltaBuilder.java +++ b/src/resources/network/DeltaBuilder.java @@ -30,7 +30,9 @@ package resources.network; import network.packets.swg.zone.baselines.Baseline.BaselineType; import network.packets.swg.zone.deltas.DeltasMessage; import resources.objects.SWGObject; +import resources.objects.creature.CreatureObject; import resources.player.Player; +import resources.player.PlayerState; import utilities.Encoder; import utilities.Encoder.StringType; @@ -63,10 +65,21 @@ public class DeltaBuilder { public void send() { DeltasMessage message = getBuiltMessage(); + boolean sendSelf = true; + if (object instanceof CreatureObject && ((CreatureObject) object).isLoggedInPlayer() && object.getOwner().getPlayerState() != PlayerState.ZONED_IN) + sendSelf = false; switch(num) { - case 3: object.sendObserversAndSelf(message); break; - case 6: object.sendObserversAndSelf(message); break; - default: object.sendSelf(message); break; + case 3: + case 6: + if (sendSelf) + object.sendObserversAndSelf(message); + else + object.sendObservers(message); + break; + default: + if (sendSelf) + object.sendSelf(message); + break; } } diff --git a/src/resources/objects/SWGObject.java b/src/resources/objects/SWGObject.java index 3715bf3b5..586a930b4 100644 --- a/src/resources/objects/SWGObject.java +++ b/src/resources/objects/SWGObject.java @@ -50,7 +50,6 @@ import resources.network.DeltaBuilder; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; import resources.player.Player; -import resources.player.PlayerState; import resources.server_info.Log; import services.CoreManager; import utilities.Encoder.StringType; @@ -981,24 +980,12 @@ public abstract class SWGObject implements Serializable, Comparable { } public void sendDelta(int type, int update, Object value) { - - } - - public final void sendDelta(BaselineType baseline, int type, int update, Object value) { - Player owner = getOwner(); - if (owner == null || (owner.getPlayerState() != PlayerState.ZONED_IN)) - return; - - DeltaBuilder builder = new DeltaBuilder(this, baseline, type, update, value); + DeltaBuilder builder = new DeltaBuilder(this, objectType, type, update, value); builder.send(); } - public final void sendDelta(BaselineType baseline, int type, int update, Object value, StringType strType) { - Player owner = getOwner(); - if (owner == null || (owner.getPlayerState() != PlayerState.ZONED_IN)) - return; - - DeltaBuilder builder = new DeltaBuilder(this, baseline, type, update, value, strType); + public final void sendDelta(int type, int update, Object value, StringType strType) { + DeltaBuilder builder = new DeltaBuilder(this, objectType, type, update, value, strType); builder.send(); } diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 57710c0f0..6cc10265c 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -301,7 +301,8 @@ public class CreatureObject extends TangibleObject { public void setPosture(Posture posture) { this.posture = posture; sendDelta(3, 13, posture.getId()); - sendObserversAndSelf(new PostureUpdate(getObjectId(), posture)); + if (isPlayer()) + sendObserversAndSelf(new PostureUpdate(getObjectId(), posture)); } public void setRace(Race race) { @@ -912,11 +913,4 @@ public class CreatureObject extends TangibleObject { super.createBaseline9(target, bb); } - public void sendDelta(int type, int update, Object value) { - sendDelta(BaselineType.CREO, type, update, value); - } - - public void sendDelta(int type, int update, Object value, StringType strType) { - sendDelta(BaselineType.CREO, type, update, value, strType); - } } diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java index 946633519..85ea2c7c9 100644 --- a/src/resources/objects/player/PlayerObject.java +++ b/src/resources/objects/player/PlayerObject.java @@ -580,14 +580,6 @@ public class PlayerObject extends IntangibleObject { bb.incrementOperandCount(31); } - public void sendDelta(int type, int update, Object value) { - sendDelta(BaselineType.PLAY, type, update, value); - } - - public void sendDelta(int type, int update, Object value, StringType strType) { - sendDelta(BaselineType.PLAY, type, update, value, strType); - } - public int getStartPlayTime() { return startPlayTime; }