diff options
author | Steve <steveb9@u.washington.edu> | 2011-03-06 01:04:30 +0000 |
---|---|---|
committer | Steve <steveb9@u.washington.edu> | 2011-03-06 01:04:30 +0000 |
commit | e21875c280c9e5b6ca5ddfb631bd5faf27b121d4 (patch) | |
tree | 3eb8bc2f6c99321650f848e21d6c0504db56f64b /src/tesseract | |
parent | c96d5df01b431742f88fc6b6618fc9f1f9fea01a (diff) |
added CO line 421 as per Alden's suggestion
Fresh new attempt at passing objects in Tick.
Diffstat (limited to 'src/tesseract')
-rw-r--r-- | src/tesseract/World.java | 115 |
1 files changed, 58 insertions, 57 deletions
diff --git a/src/tesseract/World.java b/src/tesseract/World.java index 7953491..9b1e607 100644 --- a/src/tesseract/World.java +++ b/src/tesseract/World.java @@ -66,22 +66,32 @@ public class World implements Observer { private static final int UPDATE_RATE = 30; /** - * side of HalfSpace for transmission decisions + * Top HalfSpace. + */ + private HalfSpace my_top; + + /** + * Bottom HalfSpace + */ + private HalfSpace my_bottom; + + /** + * Side of HalfSpace for transmission decisions. */ private HalfSpace my_side1; /** - * side of HalfSpace for transmission decisions + * Side of HalfSpace for transmission decisions. */ private HalfSpace my_side2; /** - * side of HalfSpace for transmission decisions + * Side of HalfSpace for transmission decisions. */ private HalfSpace my_side3; /** - * side of HalfSpace for transmission decisions + * Side of HalfSpace for transmission decisions. */ private HalfSpace my_side4; @@ -150,10 +160,12 @@ public class World implements Observer { myVirtualWorldBounds.getUpper(upper); // Bottom - myObjects.add(new HalfSpace(new Vector3f(lower), new Vector3f(0, 1, 0))); + my_bottom = new HalfSpace(new Vector3f(lower), new Vector3f(0, 1, 0)); + myObjects.add(my_bottom); // Top - myObjects.add(new HalfSpace(new Vector3f(upper), new Vector3f(0, -1, 0))); + my_top = new HalfSpace(new Vector3f(upper), new Vector3f(0, -1, 0)); + myObjects.add(my_top); // Sides my_side1 = new HalfSpace(new Vector3f(upper), new Vector3f(0, 0, -1)); @@ -254,62 +266,51 @@ public class World implements Observer { // Collision Detection with Aldens mar4 suggestions for (int i = 0; i < myObjects.size() - 1; i++) { - for (int j = i + 1; j < myObjects.size(); j++) { - ArrayList<CollisionInfo> collisions = - CollisionDetector.calculateCollisions(myObjects.get(i),myObjects.get(j)); - if (collisions.size() > 0) { - //if 'i' side and a neighbor exists, transmit j object to that node - if (myObjects.get(i).equals(my_side1) && myPeer.getPeerInDirection - (my_side1.getPosition().getX(), my_side1.getPosition().getY()) != null) { - myPeer.sendPayloadToPeer(myPeer.getPeerInDirection - (my_side1.getPosition().getX(), my_side1.getPosition().getY()), myObjects.get(j)); - myObjects.get(j).detach(); - } - if (myObjects.get(i).equals(my_side2)&& myPeer.getPeerInDirection - (my_side2.getPosition().getX(), my_side2.getPosition().getY()) != null) { - myPeer.sendPayloadToPeer(myPeer.getPeerInDirection - (my_side2.getPosition().getX(), my_side2.getPosition().getY()), myObjects.get(j)); - myObjects.get(j).detach(); - } - if (myObjects.get(i).equals(my_side3)&& myPeer.getPeerInDirection - (my_side3.getPosition().getX(), my_side3.getPosition().getY()) != null) { - myPeer.sendPayloadToPeer(myPeer.getPeerInDirection - (my_side3.getPosition().getX(), my_side3.getPosition().getY()), myObjects.get(j)); - myObjects.get(j).detach(); - } - if (myObjects.get(i).equals(my_side4)&& myPeer.getPeerInDirection - (my_side4.getPosition().getX(), my_side4.getPosition().getY()) != null) { + + //Used to get size of CollsionInfo and if > 0 then there is a collison. + ArrayList<CollisionInfo> collisions = + CollisionDetector.calculateCollisions(myObjects.get(i),myObjects.get(i + 1)); + + if (collisions.size() > 0) { + for (int j = i + 1; j < myObjects.size(); j++) { + + //i and j are not a HalfSpaces, then they are regular objects colliding + if (!(myObjects.get(i) instanceof HalfSpace) && !(myObjects.get(j) instanceof HalfSpace)) { + myObjects.get(i).resolveCollisions(myObjects.get(j), collisions); + + //i is a top or bottom so resolve regular collision + } else if (myObjects.get(i).equals(my_top) || myObjects.get(i).equals(my_bottom)) { + myObjects.get(i).resolveCollisions(myObjects.get(j), collisions); + + //j is a top or bottom so resolve regular collision + } else if (myObjects.get(j).equals(my_top) || myObjects.get(j).equals(my_bottom)) { + myObjects.get(i).resolveCollisions(myObjects.get(j), collisions); + + //i is now either a side or shape so if it is a side transmit j through side i if a neighbor exits + } else if (myObjects.get(i) instanceof HalfSpace && myPeer.getPeerInDirection + (myObjects.get(i).getPosition().getX(), myObjects.get(i).getPosition().getY()) != null) { + + //transmit j myPeer.sendPayloadToPeer(myPeer.getPeerInDirection - (my_side4.getPosition().getX(), my_side4.getPosition().getY()), myObjects.get(j)); + (myObjects.get(i).getPosition().getX(), myObjects.get(i).getPosition().getY()), + myObjects.get(j)); + myObjects.get(j).detach(); - } - //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) { - myPeer.sendPayloadToPeer(myPeer.getPeerInDirection - (my_side1.getPosition().getX(), my_side1.getPosition().getY()), myObjects.get(i)); - myObjects.get(i).detach(); - } - if (myObjects.get(j).equals(my_side2)&& myPeer.getPeerInDirection - (my_side2.getPosition().getX(), my_side2.getPosition().getY()) != null) { - myPeer.sendPayloadToPeer(myPeer.getPeerInDirection - (my_side2.getPosition().getX(), my_side2.getPosition().getY()), myObjects.get(i)); - myObjects.get(i).detach(); - } - if (myObjects.get(j).equals(my_side3)&& myPeer.getPeerInDirection - (my_side3.getPosition().getX(), my_side3.getPosition().getY()) != null) { - myPeer.sendPayloadToPeer(myPeer.getPeerInDirection - (my_side3.getPosition().getX(), my_side3.getPosition().getY()), myObjects.get(i)); - myObjects.get(i).detach(); - } - if (myObjects.get(j).equals(my_side4)&& myPeer.getPeerInDirection - (my_side4.getPosition().getX(), my_side4.getPosition().getY()) != null) { + + //j is now either a side or shape so if it is a side transmit i through side j if a neighbor exits + } else if (myObjects.get(j) instanceof HalfSpace && myPeer.getPeerInDirection + (myObjects.get(i).getPosition().getX(), myObjects.get(i).getPosition().getY()) != null) { + + //transmit i myPeer.sendPayloadToPeer(myPeer.getPeerInDirection - (my_side4.getPosition().getX(), my_side4.getPosition().getY()), myObjects.get(i)); - myObjects.get(i).detach(); + (myObjects.get(i).getPosition().getX(), myObjects.get(i).getPosition().getY()), + myObjects.get(j)); + myObjects.get(j).detach(); + + //shouldn't get here } else { - myObjects.get(i).resolveCollisions(myObjects.get(j)); + continue; } } } |