diff --git a/src/engine/gameManager/BuildingManager.java b/src/engine/gameManager/BuildingManager.java index 8ca12d26..9c10cbcf 100644 --- a/src/engine/gameManager/BuildingManager.java +++ b/src/engine/gameManager/BuildingManager.java @@ -1009,6 +1009,8 @@ public enum BuildingManager { public static Path2D.Float hullToPath2d(String[] hullString) { + // Method builds convex hull from database vertices + ArrayList vertices = new ArrayList<>(); ArrayList floats = new ArrayList<>(); Path2D.Float outPath = new Path2D.Float(); @@ -1041,14 +1043,22 @@ public enum BuildingManager { return outPath; } - public static void loadColliders(Building building){ + public static void loadColliders(Building building) { + + // Load colliders for this building + building.meshes = new ArrayList<>(); - for(Path2D.Float path : _hull_data.get(building.meshUUID)){ + + for (Path2D.Float path : _hull_data.get(building.meshUUID)) { + Path2D.Float translatedPath = new Path2D.Float(path); - AffineTransform offset = AffineTransform.getTranslateInstance(building.loc.x , building.loc.y); + AffineTransform offset = AffineTransform.getTranslateInstance(building.loc.x, building.loc.y); + translatedPath.transform(offset); + AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(building.getBounds().getQuaternion().angleY), building.loc.x, building.loc.z); translatedPath.transform(rotate); + building.meshes.add(translatedPath); } }