summaryrefslogtreecommitdiff
path: root/src/tesseract/World.java
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2011-02-12 18:57:14 +0000
committerJesse Morgan <jesse@jesterpm.net>2011-02-12 18:57:14 +0000
commitc663dffc86a7fcec9f05aaf8a107e6200a35c2fa (patch)
tree4642d001dddf0042854c77cafd245b37cb9062ee /src/tesseract/World.java
parent354a7aa455a016ac179d7f027014e6b9c2a2433a (diff)
Added HalfSpaces to the bounds. Fixed collisions and particle emitters. Corrected typo in PlanarPolygonMenuItem. Added removeForce() to world and cleaned up the force adding/removing.
Diffstat (limited to 'src/tesseract/World.java')
-rw-r--r--src/tesseract/World.java50
1 files changed, 49 insertions, 1 deletions
diff --git a/src/tesseract/World.java b/src/tesseract/World.java
index 7bfe0a6..9b43b87 100644
--- a/src/tesseract/World.java
+++ b/src/tesseract/World.java
@@ -21,6 +21,8 @@ import javax.vecmath.Vector3f;
import tesseract.forces.Force;
import tesseract.objects.PhysicalObject;
+import tesseract.objects.HalfSpace;
+
import com.sun.j3d.utils.picking.PickTool;
import com.sun.j3d.utils.picking.behaviors.PickTranslateBehavior;
import com.sun.j3d.utils.picking.behaviors.PickZoomBehavior;
@@ -101,6 +103,7 @@ public class World {
//myScene.addChild(myPickableObjects);
addLights();
+ addHalfspaces();
myScene.compile();
}
@@ -133,6 +136,27 @@ public class World {
return new Shape3D(geometry);
}
+
+ private void addHalfspaces() {
+ Point3d lower = new Point3d();
+ Point3d upper = new Point3d();
+ myVirtualWorldBounds.getLower(lower);
+ myVirtualWorldBounds.getUpper(upper);
+
+ // Bottom
+ myObjects.add(new HalfSpace(new Vector3f(lower), new Vector3f(0, 1, 0)));
+
+ // 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)));
+
+ myObjects.add(new HalfSpace(new Vector3f(lower), new Vector3f(0, 0, 1)));
+ myObjects.add(new HalfSpace(new Vector3f(lower), new Vector3f(1, 0, 0)));
+
+ }
/**
* Add some standard lights to the world.
@@ -193,8 +217,9 @@ public class World {
// Collision Detection
for (int i = 0; i < myObjects.size() - 1; i++) {
- for (int j = i + 1; j < myObjects.size(); j++)
+ for (int j = i + 1; j < myObjects.size(); j++) {
myObjects.get(i).resolveCollisions(myObjects.get(j));
+ }
}
// Add new children to thr world.
@@ -251,4 +276,27 @@ public class World {
public void addForce(final Force force) {
myForces.add(force);
}
+
+ /**
+ * Remove a force from the world.
+ *
+ * @param force The force to remove.
+ */
+ public void removeForce(final Force force) {
+ myForces.remove(force);
+ }
+
+ /**
+ * Remove all forces and objects from the world.
+ */
+ public void resetWorld() {
+ myForces.clear();
+
+ for (PhysicalObject obj : myObjects) {
+ obj.detach();
+ }
+ myObjects.clear();
+
+ addHalfspaces();
+ }
}