From c663dffc86a7fcec9f05aaf8a107e6200a35c2fa Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Sat, 12 Feb 2011 18:57:14 +0000 Subject: 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. --- src/tesseract/World.java | 50 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'src/tesseract/World.java') 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(); + } } -- cgit v1.2.3