From d7c7491746cfa066338288aa4d661db0005e9ffa Mon Sep 17 00:00:00 2001 From: FatBoy-DOTC Date: Fri, 27 Oct 2023 20:28:18 -0500 Subject: [PATCH] dev command work --- src/engine/devcmd/cmds/RegionCmd.java | 25 ++++++++----------- .../mobileAI/utilities/MovementUtilities.java | 2 +- src/engine/objects/Building.java | 10 ++++++++ src/engine/objects/Zone.java | 19 ++++---------- 4 files changed, 27 insertions(+), 29 deletions(-) diff --git a/src/engine/devcmd/cmds/RegionCmd.java b/src/engine/devcmd/cmds/RegionCmd.java index 110701e5..2b227247 100644 --- a/src/engine/devcmd/cmds/RegionCmd.java +++ b/src/engine/devcmd/cmds/RegionCmd.java @@ -37,27 +37,24 @@ public class RegionCmd extends AbstractDevCmd { } Regions region = ((AbstractCharacter)target).region; if (region == null) { - this.throwbackInfo(pc, "No Region Found."); - return; - } - - if(region != null) { + output += "No Region Found." + newline; + }else{ output += "Player Info: " + ((AbstractCharacter) target).getName() + newline; output += "Region Building: " + building.getName() + newline; output += "Region Height: " + region.lerpY((AbstractCharacter)target) + newline; output += "is Stairs: " + region.isStairs() + newline; - output += "is Outside: " + region.isOutside(); + output += "is Outside: " + region.isOutside() + newline; output += "NavMesh Data" + newline; - Zone zone = ZoneManager.findSmallestZone(((AbstractCharacter) target).loc); - if(zone != null) { - output += "zone: " + zone.zoneName + newline; - output += "on navmesh: " + zone.navMesh.contains(((AbstractCharacter) target).loc.x,((AbstractCharacter) target).loc.z) + newline; - }else { - output += "zone: null" + newline; - } this.throwbackInfo(pc, output); } - + Zone zone = ZoneManager.findSmallestZone(((AbstractCharacter) target).loc); + if(zone != null) { + output += "zone: " + zone.zoneName + newline; + output += "on navmesh: " + zone.navMesh.contains(((AbstractCharacter) target).loc.x,((AbstractCharacter) target).loc.z) + newline; + }else { + output += "zone: null" + newline; + } + this.throwbackInfo(pc, "No Region Found."); } @Override diff --git a/src/engine/mobileAI/utilities/MovementUtilities.java b/src/engine/mobileAI/utilities/MovementUtilities.java index 0750292a..3748c04a 100644 --- a/src/engine/mobileAI/utilities/MovementUtilities.java +++ b/src/engine/mobileAI/utilities/MovementUtilities.java @@ -34,7 +34,7 @@ import static engine.math.FastMath.sqr; import static engine.math.FastMath.sqrt; public class MovementUtilities { -private static final int cellGap = 4; +private static final int cellGap = 1; public static boolean inRangeOfBindLocation(Mob agent) { diff --git a/src/engine/objects/Building.java b/src/engine/objects/Building.java index 0e1d9245..9fed0913 100644 --- a/src/engine/objects/Building.java +++ b/src/engine/objects/Building.java @@ -892,6 +892,7 @@ public class Building extends AbstractWorldObject { this.parentZone = ZoneManager.getZoneByUUID(this.parentZoneUUID); this.parentZone.zoneBuildingSet.add(this); + this.updateNavMesh(); // update the navmesh of the parent zone // Lookup building blueprint @@ -1529,4 +1530,13 @@ public class Building extends AbstractWorldObject { public void RemoveFromBarracksList() { } + + public void updateNavMesh(){ + for(Regions region : this.getBounds().getRegions()) + this.parentZone.navMesh.add(region.getArea()); + + MeshBounds meshBounds = Bounds.meshBoundsCache.get(this.getMeshUUID()); + if(meshBounds != null) + this.parentZone.navMesh.subtract(meshBounds.getArea()); + } } diff --git a/src/engine/objects/Zone.java b/src/engine/objects/Zone.java index 3c45a9ef..1e0f3ff4 100644 --- a/src/engine/objects/Zone.java +++ b/src/engine/objects/Zone.java @@ -16,7 +16,6 @@ import engine.db.archive.DataWarehouse; import engine.gameManager.ZoneManager; import engine.math.Bounds; import engine.math.Vector2f; -import engine.math.Vector3f; import engine.math.Vector3fImmutable; import engine.net.ByteBufferWriter; import engine.server.MBServerStatics; @@ -185,26 +184,18 @@ public class Zone extends AbstractWorldObject { ZoneManager.populateZoneCollections(this); - this.bakeNavMesh(); + this.createNavMesh(); } - public void bakeNavMesh(){ - int xPoint = (int)(this.loc.x - this.bounds.getHalfExtents().x); - int zPoint = (int) (this.loc.z - this.bounds.getHalfExtents().y); + public void createNavMesh(){ + Vector3fImmutable location = this.loc; + int xPoint = (int)(location.x - this.bounds.getHalfExtents().x); + int zPoint = (int) (location.z - this.bounds.getHalfExtents().y); int extentsX = (int) (this.bounds.getHalfExtents().x * 2); int extentsZ = (int) (this.bounds.getHalfExtents().y * 2); this.navMesh = new Area(new Rectangle(xPoint, zPoint, extentsX, extentsZ)); - - for(Building building : this.zoneBuildingSet){ - for(Regions region : building.getBounds().getRegions()) - this.navMesh.add(region.getArea()); - - MeshBounds meshBounds = Bounds.meshBoundsCache.get(building.getMeshUUID()); - if(meshBounds != null) - this.navMesh.subtract(meshBounds.getArea()); - } } /* Method sets a default value for player cities * otherwise using values derived from the loadnum