summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve <steveb9@u.washington.edu>2011-03-05 11:14:40 +0000
committerSteve <steveb9@u.washington.edu>2011-03-05 11:14:40 +0000
commitb49ec8b9f00c98e07eaf210c1984f9314a8cd5b6 (patch)
tree0330bb9c6fe8af480df1f16902f4ecf0bee8e94a
parentda9fd278e2ccb8f21babee0b4fcf42e5df1b9077 (diff)
Detection of Halfspace sides and payload transmission lines 259 to 297 complete
-rw-r--r--src/tesseract/World.java68
1 files changed, 59 insertions, 9 deletions
diff --git a/src/tesseract/World.java b/src/tesseract/World.java
index bb717ba..ad55819 100644
--- a/src/tesseract/World.java
+++ b/src/tesseract/World.java
@@ -66,6 +66,26 @@ public class World implements Observer {
private static final int UPDATE_RATE = 30;
/**
+ * side of HalfSpace for transmission decisions
+ */
+ private HalfSpace my_side1;
+
+ /**
+ * side of HalfSpace for transmission decisions
+ */
+ private HalfSpace my_side2;
+
+ /**
+ * side of HalfSpace for transmission decisions
+ */
+ private HalfSpace my_side3;
+
+ /**
+ * side of HalfSpace for transmission decisions
+ */
+ private HalfSpace my_side4;
+
+ /**
* Create a new world.
*
* @param bounds The bounding box of the world.
@@ -126,7 +146,7 @@ public class World implements Observer {
private void addHalfspaces() {
Point3d lower = new Point3d();
Point3d upper = new Point3d();
- myVirtualWorldBounds.getLower(lower);
+ myVirtualWorldBounds.getLower(lower) ;
myVirtualWorldBounds.getUpper(upper);
// Bottom
@@ -135,12 +155,16 @@ public class World implements Observer {
// Top
myObjects.add(new HalfSpace(new Vector3f(upper), new Vector3f(0, -1, 0)));
- // Sides
- myObjects.add(new HalfSpace(new Vector3f(upper), new Vector3f(0, 0, -1)));
- myObjects.add(new HalfSpace(new Vector3f(upper), new Vector3f(-1, 0, 0)));
+ // Sides
+ my_side1 = new HalfSpace(new Vector3f(upper), new Vector3f(0, 0, -1));
+ myObjects.add(my_side1);
+ my_side2 = new HalfSpace(new Vector3f(upper), new Vector3f(-1, 0, 0));
+ myObjects.add(my_side2);
- myObjects.add(new HalfSpace(new Vector3f(lower), new Vector3f(0, 0, 1)));
- myObjects.add(new HalfSpace(new Vector3f(lower), new Vector3f(1, 0, 0)));
+ my_side3 = new HalfSpace(new Vector3f(lower), new Vector3f(0, 0, 1));
+ myObjects.add(my_side3);
+ my_side4 = new HalfSpace(new Vector3f(lower), new Vector3f(1, 0, 0));
+ myObjects.add(my_side4);
}
@@ -237,9 +261,35 @@ public class World implements Observer {
for (int j = i + 1; j < myObjects.size(); j++) {
ArrayList<CollisionInfo> collisions =
CollisionDetector.calculateCollisions(myObjects.get(i),myObjects.get(j));
- if (collisions.size() == 0) {
- continue;
- }else {
+ if (collisions.size() > 0) {
+ //if 'i' is a side transmit j object
+ if (myObjects.get(i).equals(my_side1)) {
+ myPeer.sendPayloadToPeer(myPeer.getPeerInDirection
+ (my_side1.getPosition().getX(), my_side1.getPosition().getY()), myObjects.get(j));
+ } else if (myObjects.get(i).equals(my_side2)) {
+ myPeer.sendPayloadToPeer(myPeer.getPeerInDirection
+ (my_side2.getPosition().getX(), my_side2.getPosition().getY()), myObjects.get(j));
+ } else if (myObjects.get(i).equals(my_side3)) {
+ myPeer.sendPayloadToPeer(myPeer.getPeerInDirection
+ (my_side3.getPosition().getX(), my_side3.getPosition().getY()), myObjects.get(j));
+ } else if (myObjects.get(i).equals(my_side4)) {
+ myPeer.sendPayloadToPeer(myPeer.getPeerInDirection
+ (my_side4.getPosition().getX(), my_side4.getPosition().getY()), myObjects.get(j));
+
+ //if 'j' is a side transmit i object
+ } else if (myObjects.get(j).equals(my_side1)) {
+ myPeer.sendPayloadToPeer(myPeer.getPeerInDirection
+ (my_side1.getPosition().getX(), my_side1.getPosition().getY()), myObjects.get(i));
+ } else if (myObjects.get(j).equals(my_side2)) {
+ myPeer.sendPayloadToPeer(myPeer.getPeerInDirection
+ (my_side2.getPosition().getX(), my_side2.getPosition().getY()), myObjects.get(i));
+ } else if (myObjects.get(j).equals(my_side3)) {
+ myPeer.sendPayloadToPeer(myPeer.getPeerInDirection
+ (my_side3.getPosition().getX(), my_side3.getPosition().getY()), myObjects.get(i));
+ } else if (myObjects.get(j).equals(my_side4)) {
+ myPeer.sendPayloadToPeer(myPeer.getPeerInDirection
+ (my_side4.getPosition().getX(), my_side4.getPosition().getY()), myObjects.get(i));
+ }
myObjects.get(i).resolveCollisions(myObjects.get(j));
}