From 93bce11072ffec1166606ce981ac508bc7fadce6 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Fri, 28 Jan 2011 19:51:49 +0000 Subject: Roughly started some collision code following Dr. Alden's demo code. --- src/tesseract/World.java | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/tesseract/World.java') diff --git a/src/tesseract/World.java b/src/tesseract/World.java index 470990b..7da6058 100644 --- a/src/tesseract/World.java +++ b/src/tesseract/World.java @@ -17,6 +17,8 @@ import javax.vecmath.Point3d; import javax.vecmath.Vector3f; import tesseract.forces.Force; +import tesseract.objects.Collidable; +import tesseract.objects.CollisionInfo; import tesseract.objects.Forceable; import tesseract.objects.PhysicalObject; @@ -46,6 +48,11 @@ public class World { */ private List myForces; + /** + * Objects that can be collided into, a subset of myObjects. + */ + private List myCollidables; + //private List emitters; //private boolean enableEmitters; @@ -74,6 +81,7 @@ public class World { myForces = new LinkedList(); myObjects = new LinkedList(); + myCollidables = new LinkedList(); // TODO: Should this go here? myScene = new BranchGroup(); @@ -162,7 +170,14 @@ public class World { children.addAll(newChildren); } - // TODO: Eventually check for collisions here. + // Check for collisions + for (Collidable collidable : myCollidables) { + if (collidable.hasCollision(obj)) { + // Resolve the collision + CollisionInfo ci = collidable.calculateCollision(obj); + collidable.resolveCollision(obj, ci); + } + } // If it leaves the bounds of the world, DESTROY IT if (!obj.isExisting() @@ -197,6 +212,10 @@ public class World { public void addObject(final PhysicalObject obj) { myScene.addChild(obj.getGroup()); myObjects.add(obj); + + if (obj instanceof Collidable) { + myCollidables.add((Collidable) obj); + } } /** -- cgit v1.2.3