Merge branch 'jonathan'

weird
master
Jonathan Hager 5 years ago
commit ea2f9f7de0

@ -63,7 +63,7 @@ public class StaticMath {
public static Polygon[] createCollisionPolygons(Polygon wall){ public static Polygon[] createCollisionPolygons(Polygon wall){
Polygon[] collisionPolygons = new Polygon[4]; Polygon[] collisionPolygons = new Polygon[4];
// first line of polygon // first line of polygon
float[] newVertices = wall.getVertices(); float[] newVertices = wall.getVertices();
@ -83,7 +83,7 @@ public class StaticMath {
collisionPolygons[2] = new Polygon(newVertices); collisionPolygons[2] = new Polygon(newVertices);
// second line of polygon // second line of polygon
newVertices = wall.getVertices(); newVertices = wall.getVertices();
newVertices[0] = newVertices[2]; newVertices[0] = newVertices[2];
newVertices[1] = newVertices[3] + 1; newVertices[1] = newVertices[3] + 1;
@ -100,6 +100,7 @@ public class StaticMath {
newVertices[5] = newVertices[7] - 1; newVertices[5] = newVertices[7] - 1;
collisionPolygons[3] = new Polygon(newVertices); collisionPolygons[3] = new Polygon(newVertices);
return collisionPolygons; return collisionPolygons;
} }

@ -7,10 +7,12 @@ public class PermWall implements Wall {
private double rotation; private double rotation;
private Polygon polygon; private Polygon polygon;
private Polygon[] collisionPolygons;
public PermWall(double rotation, Polygon polygon){ public PermWall(double rotation, Polygon polygon){
this.rotation = rotation; this.rotation = rotation;
this.polygon = polygon; this.polygon = polygon;
collisionPolygons = StaticMath.createCollisionPolygons(polygon);
} }
@Override @Override
@ -24,6 +26,11 @@ public class PermWall implements Wall {
return Math.toDegrees(StaticMath.calculateAngle((int) vertices[0], (int) vertices[1], (int) vertices[6], (int) vertices[7])); return Math.toDegrees(StaticMath.calculateAngle((int) vertices[0], (int) vertices[1], (int) vertices[6], (int) vertices[7]));
} }
@Override
public Polygon[] getCollisionPolygons() {
return collisionPolygons;
}
public void setRotation(double rotation) { public void setRotation(double rotation) {
this.rotation = rotation; this.rotation = rotation;
} }

@ -57,10 +57,8 @@ public class Projectile {
private void collision(Wall wall){ private void collision(Wall wall){
System.out.println("Collision"); System.out.println("Collision");
Polygon[] collisionPolygons = StaticMath.createCollisionPolygons(wall.getPolygon());
double collisionAngle = 0; double collisionAngle = 0;
for(Polygon collision : collisionPolygons){ for(Polygon collision : wall.getCollisionPolygons()){
if(Intersector.overlapConvexPolygons(polygon, collision)){ if(Intersector.overlapConvexPolygons(polygon, collision)){
float[] vertices = collision.getVertices(); float[] vertices = collision.getVertices();
collisionAngle = StaticMath.calculateAngle((int) vertices[0], (int) vertices[1], (int) vertices[6], (int) vertices[7]); collisionAngle = StaticMath.calculateAngle((int) vertices[0], (int) vertices[1], (int) vertices[6], (int) vertices[7]);

@ -9,11 +9,13 @@ public class TempWall implements Wall {
private double rotation; private double rotation;
private Polygon polygon; private Polygon polygon;
private int lifetime; private int lifetime;
private Polygon[] collisionPolygons;
public TempWall(double rotation, Polygon polygon, int lifetime){ public TempWall(double rotation, Polygon polygon, int lifetime){
this.rotation = rotation; this.rotation = rotation;
this.polygon = polygon; this.polygon = polygon;
this.lifetime = lifetime; this.lifetime = lifetime;
collisionPolygons = StaticMath.createCollisionPolygons(polygon);
} }
@Override @Override
@ -27,6 +29,11 @@ public class TempWall implements Wall {
return Math.toDegrees(StaticMath.calculateAngle((int) vertices[0], (int) vertices[1], (int) vertices[6], (int) vertices[7])); return Math.toDegrees(StaticMath.calculateAngle((int) vertices[0], (int) vertices[1], (int) vertices[6], (int) vertices[7]));
} }
@Override
public Polygon[] getCollisionPolygons() {
return collisionPolygons;
}
public void setRotation(double rotation) { public void setRotation(double rotation) {
this.rotation = rotation; this.rotation = rotation;
} }

@ -6,4 +6,5 @@ public interface Wall {
public Wall timerStep(); public Wall timerStep();
public Polygon getPolygon(); public Polygon getPolygon();
public double getRotation(); public double getRotation();
public Polygon[] getCollisionPolygons();
} }

Loading…
Cancel
Save