Boats bounce away from marks.

- Changed onCollisionEnter signature to pass boat info

#story[1100]
main
cbt24 9 years ago
parent 8113867576
commit eaa0d2e82b

@ -27,7 +27,7 @@ public abstract class Collider extends Observable implements Locatable {
if(actualDistance <= distance) {
Collision collision = new Collision(relative, distance);
// Notify object of collision
onCollisionEnter(collision);
onCollisionEnter(boat, collision);
// Notify observers of collision
notifyObservers(collision);
this.setChanged();
@ -45,7 +45,8 @@ public abstract class Collider extends Observable implements Locatable {
/**
* Handle a collision event
* @param collider
* @param e details of collision
*/
public abstract void onCollisionEnter(Collision e);
public abstract void onCollisionEnter(Boat collider, Collision e);
}

@ -39,7 +39,7 @@ public class ColliderRegistry extends Collider implements Observer {
}
@Override
public void onCollisionEnter(Collision e) {}
public void onCollisionEnter(Boat collider, Collision e) {}
@Override
public GPSCoordinate getPosition() {

@ -400,6 +400,6 @@ public class Boat extends Collider {
}
@Override
public void onCollisionEnter(Collision e) {
public void onCollisionEnter(Boat collider, Collision e) {
}
}

@ -24,6 +24,10 @@ public class Mark extends Collider {
*/
private GPSCoordinate position;
/**
* Repulsion radius of the mark
*/
private double repulsionRadius = 50;
/**
* Constructs a mark with a given source ID, name, and position.
@ -81,10 +85,12 @@ public class Mark extends Collider {
@Override
public boolean rayCast(Boat boat) {
return rayCast(boat, 100);
return rayCast(boat, repulsionRadius);
}
@Override
public void onCollisionEnter(Collision e) {
public void onCollisionEnter(Boat collider, Collision e) {
Azimuth reverseAzimuth = Azimuth.fromDegrees(collider.getBearing().degrees() - 180d);
collider.setPosition(GPSCoordinate.calculateNewPosition(collider.getPosition(), 2 * repulsionRadius, reverseAzimuth));
}
}

Loading…
Cancel
Save