diff --git a/src/engine/Enum.java b/src/engine/Enum.java index fd419dab..ce5dfa3c 100644 --- a/src/engine/Enum.java +++ b/src/engine/Enum.java @@ -1612,7 +1612,7 @@ public class Enum { ESTATE(64f, 64f), FORTRESS(64f, 64f), CITADEL(64f, 64f), - WALLSTRAIGHTTOWER(16f, 64), + WALLSTRAIGHTTOWER(32F, 64), WALLSTAIRS(64, 64); private final Vector2f extents; diff --git a/src/engine/gameManager/BuildingManager.java b/src/engine/gameManager/BuildingManager.java index 990c4efd..d9ea9810 100644 --- a/src/engine/gameManager/BuildingManager.java +++ b/src/engine/gameManager/BuildingManager.java @@ -17,7 +17,6 @@ import engine.job.JobContainer; import engine.job.JobScheduler; import engine.jobs.UpgradeBuildingJob; import engine.math.Bounds; -import engine.math.Quaternion; import engine.math.Vector3fImmutable; import engine.net.client.msg.ErrorPopupMsg; import engine.objects.*; @@ -72,21 +71,6 @@ public enum BuildingManager { return buildingLocation; } - public static Quaternion getSlotRotation(Building building, int slot) { - - if (slot == -1) - return new Quaternion(); - - BuildingLocation buildingLocation; - buildingLocation = _slotLocations.get(building.meshUUID).get(slot - 1); // array index - - if (buildingLocation == null) { - Logger.error("Invalid slot rotation for building: " + building.getObjectUUID()); - } - - return buildingLocation.getRotation(); - } - public static boolean playerCanManage(PlayerCharacter player, Building building) { if (player == null) diff --git a/src/engine/objects/Building.java b/src/engine/objects/Building.java index 0b058624..d625234c 100644 --- a/src/engine/objects/Building.java +++ b/src/engine/objects/Building.java @@ -1245,6 +1245,10 @@ public class Building extends AbstractWorldObject { stuckLocation = stuckLocations.get(ThreadLocalRandom.current().nextInt(stuckLocations.size())).getLocation(); stuckLocation = this.getLoc().add(stuckLocation); + // Rotate stuck position by the building rotation + + stuckLocation = Vector3fImmutable.rotateAroundPoint(this.getLoc(), stuckLocation, this.getBounds().getQuaternion().angleY); + return stuckLocation; } diff --git a/src/engine/objects/Mob.java b/src/engine/objects/Mob.java index d97a0003..74a2c21e 100644 --- a/src/engine/objects/Mob.java +++ b/src/engine/objects/Mob.java @@ -922,11 +922,6 @@ public class Mob extends AbstractIntelligenceAgent { this.bindLoc = building.getLoc().add(slotLocation); - // Rotate MOB by slot rotation - - slotRotation = BuildingManager.getSlotLocation(building, slot).getRotation(); - this.setRot(new Vector3f(0, slotRotation.y, 0)); - } // Rotate slot position by the building rotation diff --git a/src/engine/objects/NPC.java b/src/engine/objects/NPC.java index 3cb6868a..e4851196 100644 --- a/src/engine/objects/NPC.java +++ b/src/engine/objects/NPC.java @@ -814,11 +814,6 @@ public class NPC extends AbstractCharacter { this.loc = new Vector3fImmutable(bindLoc); - // Rotate NPC by slot rotation - - slotRotation = BuildingManager.getSlotLocation(building, slot).getRotation(); - this.setRot(new Vector3f(0, slotRotation.y, 0)); - // Rotate NPC rotation by the building's rotation slotRotation = new Quaternion().fromAngles(0, acos(this.getRot().y) * 2, 0);