shape
This commit is contained in:
@@ -14,8 +14,11 @@ import engine.devcmd.AbstractDevCmd;
|
|||||||
import engine.gameManager.BuildingManager;
|
import engine.gameManager.BuildingManager;
|
||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.math.Vector3f;
|
import engine.math.Vector3f;
|
||||||
|
import engine.math.Vector3fImmutable;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.geom.Area;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
public class RegionCmd extends AbstractDevCmd {
|
public class RegionCmd extends AbstractDevCmd {
|
||||||
@@ -52,13 +55,26 @@ public class RegionCmd extends AbstractDevCmd {
|
|||||||
output += "NavMesh Data" + newline;
|
output += "NavMesh Data" + newline;
|
||||||
this.throwbackInfo(pc, output);
|
this.throwbackInfo(pc, output);
|
||||||
}
|
}
|
||||||
Zone zone = ZoneManager.findSmallestZone(((AbstractCharacter) target).loc);
|
//Zone zone = ZoneManager.findSmallestZone(((AbstractCharacter) target).loc);
|
||||||
if(zone != null) {
|
//if(zone != null) {
|
||||||
output += "zone: " + zone.zoneName + newline;
|
// output += "zone: " + zone.zoneName + newline;
|
||||||
output += "on navmesh: " + zone.navMesh.contains(((AbstractCharacter) target).loc.x,((AbstractCharacter) target).loc.z) + newline;
|
// output += "on navmesh: " + zone.navMesh.contains(((AbstractCharacter) target).loc.x,((AbstractCharacter) target).loc.z) + newline;
|
||||||
}else {
|
//}else {
|
||||||
output += "zone: null" + newline;
|
// output += "zone: null" + newline;
|
||||||
|
//}
|
||||||
|
if( building != null){
|
||||||
|
boolean pointBlocked = false;
|
||||||
|
for(Area area : building.meshes){
|
||||||
|
Vector3fImmutable pos = ((AbstractCharacter)target).loc;
|
||||||
|
if(area.contains(new Point((int) pos.x, (int) pos.z))){
|
||||||
|
pointBlocked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
output += "pointBlocked: " + pointBlocked;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this.throwbackInfo(pc, output);
|
this.throwbackInfo(pc, output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -984,52 +984,13 @@ public enum BuildingManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Area footprint = new Area(new Rectangle((int) building.loc.x, (int) building.loc.z, (int) (building.getBounds().getHalfExtents().x * 2), (int) (building.getBounds().getHalfExtents().y * 2)));
|
|
||||||
building.parentZone.navMesh.subtract(footprint);
|
|
||||||
|
|
||||||
for (ArrayList<Vector2f> meshEntry : convexHullList) {
|
for (ArrayList<Vector2f> meshEntry : convexHullList) {
|
||||||
Polygon poly = new Polygon();
|
Polygon poly = new Polygon();
|
||||||
for(Vector2f vect : meshEntry){
|
for (Vector2f vect : meshEntry) {
|
||||||
Vector3fImmutable rotationPoint = Vector3fImmutable.rotateAroundPoint(new Vector3fImmutable(vect.x + building.loc.x,0,vect.y + building.loc.z),building.loc,building.getRot().getRotation());
|
Vector3fImmutable rotationPoint = Vector3fImmutable.rotateAroundPoint(new Vector3fImmutable(vect.x + building.loc.x, 0, vect.y + building.loc.z), building.loc, building.getRot().getRotation());
|
||||||
poly.addPoint((int) rotationPoint.x, (int) rotationPoint.z);
|
poly.addPoint((int) rotationPoint.x, (int) rotationPoint.z);
|
||||||
}
|
}
|
||||||
footprint.subtract(new Area(poly));
|
building.meshes.add(new Area(poly));
|
||||||
//Path2D.Float stencilPath = new Path2D.Float();
|
|
||||||
|
|
||||||
// Add building offset and rotation to vertices
|
|
||||||
|
|
||||||
//for (Vector2f vertex : meshEntry) {
|
|
||||||
// vertex.addLocal(building.getLoc().x, building.getLoc().z);
|
|
||||||
// Vector3fImmutable rotatedPoint = new Vector3fImmutable(vertex.x, 0, vertex.y);
|
|
||||||
// rotatedPoint = Vector3fImmutable.rotateAroundPoint(building.getLoc(), rotatedPoint, building.getBounds().getQuaternion().angleY);
|
|
||||||
// vertex.set(rotatedPoint.x, rotatedPoint.z);
|
|
||||||
//}
|
|
||||||
|
|
||||||
// Move to start of path
|
|
||||||
|
|
||||||
//stencilPath.moveTo(meshEntry.get(0).x, meshEntry.get(0).y);
|
|
||||||
|
|
||||||
// Draw path
|
|
||||||
|
|
||||||
//for (int i = 1; i < meshEntry.size(); i++)
|
|
||||||
// stencilPath.lineTo(meshEntry.get(i).x, meshEntry.get(i).y);
|
|
||||||
|
|
||||||
// enclose the path
|
|
||||||
|
|
||||||
//stencilPath.closePath();
|
|
||||||
|
|
||||||
// subtract stencil from zone navmesh
|
|
||||||
|
|
||||||
//Area stencilArea = new Area(stencilPath);
|
|
||||||
//AffineTransform at = new AffineTransform();
|
|
||||||
//at.createTransformedShape(new Polygon());
|
|
||||||
//building.parentZone.navMesh.subtract(stencilArea.createTransformedArea(at));
|
|
||||||
}
|
}
|
||||||
building.parentZone.navMesh.add(footprint);
|
|
||||||
|
|
||||||
//add in all the regions to the navMesh
|
|
||||||
|
|
||||||
//for (Regions region : building.getBounds().getRegions())
|
|
||||||
// building.parentZone.navMesh.add(region.getArea());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import engine.net.client.msg.UpdateObjectMsg;
|
|||||||
import engine.server.MBServerStatics;
|
import engine.server.MBServerStatics;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
|
import java.awt.geom.Area;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -99,6 +100,8 @@ public class Building extends AbstractWorldObject {
|
|||||||
private ConcurrentHashMap<Integer, Condemned> condemned;
|
private ConcurrentHashMap<Integer, Condemned> condemned;
|
||||||
private ArrayList<Building> children = null;
|
private ArrayList<Building> children = null;
|
||||||
|
|
||||||
|
public ArrayList<Area> meshes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ResultSet Constructor
|
* ResultSet Constructor
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ public class Zone extends AbstractWorldObject {
|
|||||||
|
|
||||||
ZoneManager.populateZoneCollections(this);
|
ZoneManager.populateZoneCollections(this);
|
||||||
|
|
||||||
this.createNavMesh();
|
//this.createNavMesh();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user