diff options
Diffstat (limited to 'src/tesseract/World.java')
-rw-r--r-- | src/tesseract/World.java | 42 |
1 files changed, 18 insertions, 24 deletions
diff --git a/src/tesseract/World.java b/src/tesseract/World.java index 6f8e446..11e2677 100644 --- a/src/tesseract/World.java +++ b/src/tesseract/World.java @@ -28,6 +28,7 @@ import common.CollidableObject; import common.CollisionDetector; import common.CollisionInfo; import common.Peer; +import common.PeerInformation; /** * Model of the 3D world. @@ -257,6 +258,15 @@ public class World implements Observer { */ // Collision Detection with Aldens mar4 suggestions + PeerInformation neighbor1 = myPeer.getPeerInDirection(my_side1.getPosition().getX(), + my_side1.getPosition().getY()); + PeerInformation neighbor2 = myPeer.getPeerInDirection(my_side2.getPosition().getX(), + my_side2.getPosition().getY()); + PeerInformation neighbor3 = myPeer.getPeerInDirection(my_side3.getPosition().getX(), + my_side3.getPosition().getY()); + PeerInformation neighbor4 = myPeer.getPeerInDirection(my_side4.getPosition().getX(), + my_side4.getPosition().getY()); + for (int i = 0; i < myObjects.size() - 1; i++) { for (int j = i + 1; j < myObjects.size(); j++) { ArrayList<CollisionInfo> collisions = @@ -265,63 +275,47 @@ public class World implements Observer { //if 'i' is a side and a neighbor exists, transmit j object to that node if (collisions.size() > 0) { - if (myObjects.get(i).equals(my_side1) && myPeer.getPeerInDirection - (my_side1.getPosition().getX(), my_side1.getPosition().getY()) != null) { + if (myObjects.get(i).equals(my_side1) && neighbor1 != null) { myPeer.sendPayloadToPeer(myPeer.getPeerInDirection (my_side1.getPosition().getX(), my_side1.getPosition().getY()), myObjects.get(j)); myObjects.get(j).detach(); - myObjects.remove(myObjects.get(j)); } - if (myObjects.get(i).equals(my_side2)&& myPeer.getPeerInDirection - (my_side2.getPosition().getX(), my_side2.getPosition().getY()) != null) { + if (myObjects.get(i).equals(my_side2)&& neighbor2 != null) { myPeer.sendPayloadToPeer(myPeer.getPeerInDirection (my_side2.getPosition().getX(), my_side2.getPosition().getY()), myObjects.get(j)); myObjects.get(j).detach(); - myObjects.remove(myObjects.get(j)); } - if (myObjects.get(i).equals(my_side3)&& myPeer.getPeerInDirection - (my_side3.getPosition().getX(), my_side3.getPosition().getY()) != null) { + if (myObjects.get(i).equals(my_side3)&& neighbor3 != null) { myPeer.sendPayloadToPeer(myPeer.getPeerInDirection (my_side3.getPosition().getX(), my_side3.getPosition().getY()), myObjects.get(j)); myObjects.get(j).detach(); - myObjects.remove(myObjects.get(j)); } - if (myObjects.get(i).equals(my_side4)&& myPeer.getPeerInDirection - (my_side4.getPosition().getX(), my_side4.getPosition().getY()) != null) { + if (myObjects.get(i).equals(my_side4)&& neighbor4 != null) { myPeer.sendPayloadToPeer(myPeer.getPeerInDirection (my_side4.getPosition().getX(), my_side4.getPosition().getY()), myObjects.get(j)); myObjects.get(j).detach(); - myObjects.remove(myObjects.get(j)); } //if 'j' is a side transmit i object - if (myObjects.get(j).equals(my_side1)&& myPeer.getPeerInDirection - (my_side1.getPosition().getX(), my_side1.getPosition().getY()) != null) { + if (myObjects.get(j).equals(my_side1)&& neighbor1 != null) { myPeer.sendPayloadToPeer(myPeer.getPeerInDirection (my_side1.getPosition().getX(), my_side1.getPosition().getY()), myObjects.get(i)); myObjects.get(i).detach(); - myObjects.remove(myObjects.get(i)); } - if (myObjects.get(j).equals(my_side2)&& myPeer.getPeerInDirection - (my_side2.getPosition().getX(), my_side2.getPosition().getY()) != null) { + if (myObjects.get(j).equals(my_side2)&& neighbor2 != null) { myPeer.sendPayloadToPeer(myPeer.getPeerInDirection (my_side2.getPosition().getX(), my_side2.getPosition().getY()), myObjects.get(i)); myObjects.get(i).detach(); - myObjects.remove(myObjects.get(i)); } - if (myObjects.get(j).equals(my_side3)&& myPeer.getPeerInDirection - (my_side3.getPosition().getX(), my_side3.getPosition().getY()) != null) { + if (myObjects.get(j).equals(my_side3)&& neighbor3 != null) { myPeer.sendPayloadToPeer(myPeer.getPeerInDirection (my_side3.getPosition().getX(), my_side3.getPosition().getY()), myObjects.get(i)); myObjects.get(i).detach(); - myObjects.remove(myObjects.get(i)); } - if (myObjects.get(j).equals(my_side4)&& myPeer.getPeerInDirection - (my_side4.getPosition().getX(), my_side4.getPosition().getY()) != null) { + if (myObjects.get(j).equals(my_side4)&& neighbor4!= null) { myPeer.sendPayloadToPeer(myPeer.getPeerInDirection (my_side4.getPosition().getX(), my_side4.getPosition().getY()), myObjects.get(i)); myObjects.get(i).detach(); - myObjects.remove(myObjects.get(i)); } myObjects.get(i).resolveCollisions(myObjects.get(j)); |