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/forces | |
parent | 380952816905723a8f3a18104e18e92ba85b2b88 (diff) |
And we now have a basic 3d world :D
Diffstat (limited to 'src/tesseract/forces')
-rw-r--r-- | src/tesseract/forces/Force.java | 29 | ||||
-rw-r--r-- | src/tesseract/forces/Gravity.java | 49 |
2 files changed, 78 insertions, 0 deletions
diff --git a/src/tesseract/forces/Force.java b/src/tesseract/forces/Force.java new file mode 100644 index 0000000..60498a1 --- /dev/null +++ b/src/tesseract/forces/Force.java @@ -0,0 +1,29 @@ +package tesseract.forces; + +import javax.vecmath.Vector3f; + +import tesseract.objects.Forceable; + +/** + * Abstract Force class. + * + * @author Jesse Morgan + */ +public abstract class Force { + + /** + * Calculate the force to apply to the give object. + * @param obj The given object. + * @return A vector describing the force. + */ + protected abstract Vector3f calculateForce(final Forceable obj); + + /** + * Apply this force to the given object. + * + * @param obj The given object. + */ + public void applyForceTo(final Forceable obj) { + obj.addForce(calculateForce(obj)); + } +} diff --git a/src/tesseract/forces/Gravity.java b/src/tesseract/forces/Gravity.java new file mode 100644 index 0000000..79e7f6a --- /dev/null +++ b/src/tesseract/forces/Gravity.java @@ -0,0 +1,49 @@ +package tesseract.forces; + +import javax.vecmath.Vector3f; + +import tesseract.objects.Forceable; + +/** + * Generic downward force class (aka Gravity). + * + * @author Jesse Morgan + */ +public class Gravity extends Force { + /** + * Default gravity force. + */ + private static final float DEFAULT_GRAVITY = 1f; + + /** + * The force used here. + */ + private float myGravity; + + /** + * Create a default gravity. + */ + public Gravity() { + myGravity = DEFAULT_GRAVITY; + } + + /** + * Create gravity with a custom strength. + * + * @param gravity The strength of gravity. + */ + public Gravity(final float gravity) { + myGravity = gravity; + } + + /** + * Calculate the force of gravity... + * + * @param obj The object the force is calculated for. + * @return A vector describing the force + */ + protected Vector3f calculateForce(final Forceable obj) { + return new Vector3f(0, -myGravity, 0); + } + +} |