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/objects/HalfSpace.java | 17 +++++++++++++++++ src/tesseract/objects/PhysicalObject.java | 5 ++++- src/tesseract/objects/emitters/ParticleEmitter.java | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/tesseract/objects/HalfSpace.java (limited to 'src/tesseract/objects') diff --git a/src/tesseract/objects/HalfSpace.java b/src/tesseract/objects/HalfSpace.java new file mode 100644 index 0000000..df3f715 --- /dev/null +++ b/src/tesseract/objects/HalfSpace.java @@ -0,0 +1,17 @@ +package tesseract.objects; + +import javax.vecmath.Vector3f; + +public class HalfSpace extends PhysicalObject { + public Vector3f normal; + // Right-hand side of the plane equation: Ax + By + Cz = D + public float intercept; + + public HalfSpace(Vector3f position, Vector3f normal) { + super(position, Float.POSITIVE_INFINITY); + + this.normal = new Vector3f(normal); + this.normal.normalize(); + this.intercept = this.normal.dot(position); + } +} diff --git a/src/tesseract/objects/PhysicalObject.java b/src/tesseract/objects/PhysicalObject.java index 2634ca2..73e0c91 100644 --- a/src/tesseract/objects/PhysicalObject.java +++ b/src/tesseract/objects/PhysicalObject.java @@ -22,9 +22,12 @@ import com.sun.j3d.utils.geometry.Primitive; * @author Jesse Morgan */ public class PhysicalObject extends CollidableObject { + protected boolean collidable; + public PhysicalObject(final Vector3f thePosition, final float mass) { super(mass); this.position.set(thePosition); + collidable = true; } public List spawnChildren(final float duration) { @@ -67,7 +70,7 @@ public class PhysicalObject extends CollidableObject { } public void resolveCollisions(final PhysicalObject other) { - if (this.node != null && other.node != null) { + if (collidable && other.collidable) { super.resolveCollisions(other); } } diff --git a/src/tesseract/objects/emitters/ParticleEmitter.java b/src/tesseract/objects/emitters/ParticleEmitter.java index 5aa391a..15c94a9 100644 --- a/src/tesseract/objects/emitters/ParticleEmitter.java +++ b/src/tesseract/objects/emitters/ParticleEmitter.java @@ -43,6 +43,7 @@ public class ParticleEmitter extends PhysicalObject { final Color3f color) { super(position, Float.POSITIVE_INFINITY); + this.collidable = false; myCount = 0; myFrequency = frequency; -- cgit v1.2.3