forked from MagicBane/Server
load mesh data and structure meshes
This commit is contained in:
@@ -32,13 +32,13 @@ public class Mesh {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.triangles = new ArrayList<>();
|
this.triangles = new ArrayList<>();
|
||||||
double radian = (double)rotation;
|
int degrees = (int)Math.toDegrees(rotation);
|
||||||
for(Triangle tri : CollisionManager.mesh_triangles.get(this.mesh_id)){
|
for(Triangle tri : CollisionManager.mesh_triangles.get(this.mesh_id)){
|
||||||
|
|
||||||
Triangle newTri = new Triangle();
|
Triangle newTri = new Triangle();
|
||||||
Vector3f rotatedPoint1 = Vector3f.rotateAroundPoint(new Vector3f(tri.point1.x,mesh_location.y,tri.point1.y),mesh_location,radian);
|
Vector3f rotatedPoint1 = Vector3f.rotateAroundPoint(new Vector3f(tri.point1.x,mesh_location.y,tri.point1.y),mesh_location,degrees);
|
||||||
Vector3f rotatedPoint2 = Vector3f.rotateAroundPoint(new Vector3f(tri.point2.x,mesh_location.y,tri.point2.y),mesh_location,radian);
|
Vector3f rotatedPoint2 = Vector3f.rotateAroundPoint(new Vector3f(tri.point2.x,mesh_location.y,tri.point2.y),mesh_location,degrees);
|
||||||
Vector3f rotatedPoint3 = Vector3f.rotateAroundPoint(new Vector3f(tri.point3.x,mesh_location.y,tri.point3.y),mesh_location,radian);
|
Vector3f rotatedPoint3 = Vector3f.rotateAroundPoint(new Vector3f(tri.point3.x,mesh_location.y,tri.point3.y),mesh_location,degrees);
|
||||||
|
|
||||||
newTri.point1 = new Point2D.Float(rotatedPoint1.x,rotatedPoint1.z);
|
newTri.point1 = new Point2D.Float(rotatedPoint1.x,rotatedPoint1.z);
|
||||||
newTri.point2 = new Point2D.Float(rotatedPoint2.x,rotatedPoint2.z);
|
newTri.point2 = new Point2D.Float(rotatedPoint2.x,rotatedPoint2.z);
|
||||||
@@ -48,15 +48,17 @@ public class Mesh {
|
|||||||
newTri.sides.add(new Line2D.Float(newTri.point1,newTri.point2));
|
newTri.sides.add(new Line2D.Float(newTri.point1,newTri.point2));
|
||||||
newTri.sides.add(new Line2D.Float(newTri.point2,newTri.point3));
|
newTri.sides.add(new Line2D.Float(newTri.point2,newTri.point3));
|
||||||
newTri.sides.add(new Line2D.Float(newTri.point3,newTri.point1));
|
newTri.sides.add(new Line2D.Float(newTri.point3,newTri.point1));
|
||||||
|
|
||||||
|
this.triangles.add(newTri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MakeBounds(float rotation){
|
public void MakeBounds(float rotation){
|
||||||
double radian = (double)rotation;
|
int degrees = (int)Math.toDegrees(rotation);
|
||||||
Vector3f rotatedEnd = Vector3f.rotateAroundPoint(new Vector3f(this.mesh_end_point.x,mesh_location.y,this.mesh_end_point.z),mesh_location,radian);
|
Vector3f rotatedEnd = Vector3f.rotateAroundPoint(new Vector3f(this.mesh_end_point.x,mesh_location.y,this.mesh_end_point.z),mesh_location,degrees);
|
||||||
Vector3f rotatedRef = Vector3f.rotateAroundPoint(new Vector3f(this.mesh_ref_point.x,mesh_location.y,this.mesh_ref_point.z),mesh_location,radian);
|
Vector3f rotatedRef = Vector3f.rotateAroundPoint(new Vector3f(this.mesh_ref_point.x,mesh_location.y,this.mesh_ref_point.z),mesh_location,degrees);
|
||||||
|
|
||||||
this.mesh_bounds = new Rectangle2D.Float();
|
this.mesh_bounds = new Rectangle2D.Float();
|
||||||
this.mesh_bounds.setRect(rotatedEnd.x,rotatedEnd.z,Math.abs(rotatedEnd.x) - Math.abs(rotatedRef.x),Math.abs(rotatedEnd.z) - Math.abs(rotatedRef.z));
|
this.mesh_bounds.setRect(rotatedEnd.x,rotatedEnd.z,Math.abs(Math.abs(rotatedRef.x) - rotatedEnd.x),Math.abs(rotatedEnd.z) - Math.abs(rotatedRef.z));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,13 +33,14 @@ public class ColliderCmd extends AbstractDevCmd {
|
|||||||
output = "Collision Info:" + newline;
|
output = "Collision Info:" + newline;
|
||||||
output += "Total Meshes: " + building.buildingMeshes.size() + newline;
|
output += "Total Meshes: " + building.buildingMeshes.size() + newline;
|
||||||
for(Mesh mesh : building.buildingMeshes){
|
for(Mesh mesh : building.buildingMeshes){
|
||||||
output += "-----------------------------";
|
output += "-----------------------------" + newline;
|
||||||
output += "Mesh ID: " + mesh.mesh_id + newline;
|
output += "Mesh ID: " + mesh.mesh_id + newline;
|
||||||
output += "Mesh Location: " + mesh.mesh_location + newline;
|
output += "Mesh Location: " + mesh.mesh_location + newline;
|
||||||
|
output += "Mesh Scale: " + mesh.mesh_scale + newline;
|
||||||
output += "Mesh Min/Max: " + mesh.mesh_min_y + "/" + mesh.mesh_max_y + newline;
|
output += "Mesh Min/Max: " + mesh.mesh_min_y + "/" + mesh.mesh_max_y + newline;
|
||||||
output += "Mesh Triangle Count: " + mesh.triangles.size() + newline;
|
output += "Mesh Triangle Count: " + mesh.triangles.size() + newline;
|
||||||
output += "Mesh Rect: " + mesh.mesh_bounds + newline;
|
output += "Mesh Rect: " + mesh.mesh_bounds + newline;
|
||||||
output += "-----------------------------";
|
output += "-----------------------------" + newline;
|
||||||
}
|
}
|
||||||
|
|
||||||
throwbackInfo(pc,output);
|
throwbackInfo(pc,output);
|
||||||
|
|||||||
@@ -981,7 +981,7 @@ public enum BuildingManager {
|
|||||||
public static void BakeBuildingColliders(Building building){
|
public static void BakeBuildingColliders(Building building){
|
||||||
|
|
||||||
if(CollisionManager.structure_meshes.containsKey(building.meshUUID) == false) {
|
if(CollisionManager.structure_meshes.containsKey(building.meshUUID) == false) {
|
||||||
Logger.error("No Meshes Found Fro Structure: " + building.meshUUID);
|
Logger.error("No Meshes Found For Structure: " + building.meshUUID);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -990,6 +990,9 @@ public enum BuildingManager {
|
|||||||
|
|
||||||
//create the actual meshes from the stored mesh data
|
//create the actual meshes from the stored mesh data
|
||||||
for(MeshData meshData : CollisionManager.structure_meshes.get(building.meshUUID)){
|
for(MeshData meshData : CollisionManager.structure_meshes.get(building.meshUUID)){
|
||||||
|
if(meshData.meshID == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
Mesh generatedMesh = new Mesh();
|
Mesh generatedMesh = new Mesh();
|
||||||
generatedMesh.mesh_end_point = new Vector3f(building.loc.x,building.loc.y,building.loc.z).add(meshData.loc).add(meshData.endPoint);
|
generatedMesh.mesh_end_point = new Vector3f(building.loc.x,building.loc.y,building.loc.z).add(meshData.loc).add(meshData.endPoint);
|
||||||
generatedMesh.mesh_ref_point = new Vector3f(building.loc.x,building.loc.y,building.loc.z).add(meshData.loc).add(meshData.refPoint);
|
generatedMesh.mesh_ref_point = new Vector3f(building.loc.x,building.loc.y,building.loc.z).add(meshData.loc).add(meshData.refPoint);
|
||||||
|
|||||||
Reference in New Issue
Block a user