summaryrefslogtreecommitdiff
path: root/src/tesseract/World.java
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2011-01-28 19:51:49 +0000
committerJesse Morgan <jesse@jesterpm.net>2011-01-28 19:51:49 +0000
commit93bce11072ffec1166606ce981ac508bc7fadce6 (patch)
treea54c771e93623f262c72478db692e5ba42277829 /src/tesseract/World.java
parentfc40e7f6e3165a002326c92401c17951b7048a32 (diff)
Roughly started some collision code following Dr. Alden's demo code.
Diffstat (limited to 'src/tesseract/World.java')
-rw-r--r--src/tesseract/World.java21
1 files changed, 20 insertions, 1 deletions
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<Force> myForces;
+ /**
+ * Objects that can be collided into, a subset of myObjects.
+ */
+ private List<Collidable> myCollidables;
+
//private List<ParticleEmitter> emitters;
//private boolean enableEmitters;
@@ -74,6 +81,7 @@ public class World {
myForces = new LinkedList<Force>();
myObjects = new LinkedList<PhysicalObject>();
+ myCollidables = new LinkedList<Collidable>();
// 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);
+ }
}
/**