diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2011-01-28 18:52:51 +0000 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2011-01-28 18:52:51 +0000 |
commit | fc40e7f6e3165a002326c92401c17951b7048a32 (patch) | |
tree | ccbb0fa261c51de242cf32a3aa622c78103b352f /src/tesseract/objects/PhysicalObject.java | |
parent | 380952816905723a8f3a18104e18e92ba85b2b88 (diff) |
And we now have a basic 3d world :D
Diffstat (limited to 'src/tesseract/objects/PhysicalObject.java')
-rw-r--r-- | src/tesseract/objects/PhysicalObject.java | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/tesseract/objects/PhysicalObject.java b/src/tesseract/objects/PhysicalObject.java new file mode 100644 index 0000000..11ae9d2 --- /dev/null +++ b/src/tesseract/objects/PhysicalObject.java @@ -0,0 +1,117 @@ +package tesseract.objects; + +import java.util.List; + +import javax.media.j3d.BranchGroup; +import javax.media.j3d.Group; +import javax.media.j3d.Transform3D; +import javax.media.j3d.TransformGroup; +import javax.vecmath.Vector3f; + +/** + * This class is the parent of all objects in the world. + * + * Note: The constructor of a child class must add its shape + * to the transform group for it to be visible. + * + * @author Jesse Morgan + */ +public abstract class PhysicalObject implements Physical { + /** + * The object's current position. + */ + protected Vector3f myPosition; + + /** + * BranchGroup of the object. + */ + private BranchGroup myBranchGroup; + + /** + * TransformGroup for the object. + */ + private TransformGroup myTransformGroup; + + /** + * Does the object still exist in the world. + */ + protected boolean myExistance; + + /** + * Constructor for a PhysicalObject. + * + * @param position Initial position. + */ + + public PhysicalObject(final Vector3f position) { + myPosition = new Vector3f(position); + + myExistance = true; + + myTransformGroup = new TransformGroup(); + myTransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); + + myBranchGroup = new BranchGroup(); + myBranchGroup.setCapability(BranchGroup.ALLOW_DETACH); + myBranchGroup.addChild(myTransformGroup); + + updateTransformGroup(); + } + + /** + * @return The object's position. + */ + public Vector3f getPosition() { + return myPosition; + } + + /** + * @return The transform group of the object. + */ + protected TransformGroup getTransformGroup() { + return myTransformGroup; + } + + + /** + * @return Get the BranchGroup. + */ + public Group getGroup() { + return myBranchGroup; + } + + /** + * Remove the object from the world. + */ + public void detach() { + myBranchGroup.detach(); + myExistance = false; + } + + /** + * Does this object still exist. + * @return true if it exists. + */ + public boolean isExisting() { + return myExistance; + } + + /** + * Update the TransformGroup to the new position. + */ + protected void updateTransformGroup() { + Transform3D tmp = new Transform3D(); + tmp.setTranslation(myPosition); + myTransformGroup.setTransform(tmp); + } + + /** + * Update the state of the object. + * @param duration How much time has passed. + * @return New objects to add to the world. + */ + public List<PhysicalObject> updateState(final float duration) { + return null; + } + +} |