Stencil build up of navmesh

This commit is contained in:
2023-11-06 11:32:02 -05:00
parent 016919675a
commit e473aa5f08
+24 -9
View File
@@ -25,6 +25,7 @@ import engine.job.JobScheduler;
import engine.jobs.DoorCloseJob;
import engine.jobs.SiegeSpireWithdrawlJob;
import engine.math.Bounds;
import engine.math.Vector2f;
import engine.math.Vector3f;
import engine.math.Vector3fImmutable;
import engine.net.ByteBufferWriter;
@@ -34,8 +35,8 @@ import engine.net.client.msg.UpdateObjectMsg;
import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger;
import java.awt.*;
import java.awt.geom.Area;
import java.awt.geom.Path2D;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;
@@ -1535,17 +1536,31 @@ public class Building extends AbstractWorldObject {
}
public void updateNavMesh(){
Polygon area = new Polygon();
for(Colliders collider : this.getBounds().colliders){
area.addPoint((int) collider.startX, (int) collider.startY);
area.addPoint((int) collider.endX, (int) collider.endY);
public void updateNavMesh() {
// Build up navmesh by stencil of the
// prop's convex hull
ArrayList<ArrayList<Vector2f>> convexHullList;
convexHullList = BuildingManager._hull_data.get(this.meshUUID);
for (ArrayList<Vector2f> meshEntry : convexHullList) {
Path2D.Float stencil = new Path2D.Float();
for (Vector2f vertex : meshEntry)
stencil.moveTo(vertex.x, vertex.y);
// enclose polygon
stencil.moveTo(meshEntry.get(0).x, meshEntry.get(0).y);
Area stencilArea = new Area(stencil);
this.parentZone.navMesh.subtract(stencilArea);
}
Area blocked = new Area(area);
this.parentZone.navMesh.subtract(blocked);
//add in all the regions to the navMesh
for(Regions region : this.getBounds().getRegions())
for (Regions region : this.getBounds().getRegions())
this.parentZone.navMesh.add(region.getArea());
}
}