Boats bounce away from marks.
- Changed onCollisionEnter signature to pass boat info #story[1100]
This commit is contained in:
@@ -27,7 +27,7 @@ public abstract class Collider extends Observable implements Locatable {
|
|||||||
if(actualDistance <= distance) {
|
if(actualDistance <= distance) {
|
||||||
Collision collision = new Collision(relative, distance);
|
Collision collision = new Collision(relative, distance);
|
||||||
// Notify object of collision
|
// Notify object of collision
|
||||||
onCollisionEnter(collision);
|
onCollisionEnter(boat, collision);
|
||||||
// Notify observers of collision
|
// Notify observers of collision
|
||||||
notifyObservers(collision);
|
notifyObservers(collision);
|
||||||
this.setChanged();
|
this.setChanged();
|
||||||
@@ -45,7 +45,8 @@ public abstract class Collider extends Observable implements Locatable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle a collision event
|
* Handle a collision event
|
||||||
|
* @param collider
|
||||||
* @param e details of collision
|
* @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
|
@Override
|
||||||
public void onCollisionEnter(Collision e) {}
|
public void onCollisionEnter(Boat collider, Collision e) {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GPSCoordinate getPosition() {
|
public GPSCoordinate getPosition() {
|
||||||
|
|||||||
@@ -400,6 +400,6 @@ public class Boat extends Collider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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;
|
private GPSCoordinate position;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Repulsion radius of the mark
|
||||||
|
*/
|
||||||
|
private double repulsionRadius = 50;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a mark with a given source ID, name, and position.
|
* Constructs a mark with a given source ID, name, and position.
|
||||||
@@ -81,10 +85,12 @@ public class Mark extends Collider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean rayCast(Boat boat) {
|
public boolean rayCast(Boat boat) {
|
||||||
return rayCast(boat, 100);
|
return rayCast(boat, repulsionRadius);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user