summaryrefslogtreecommitdiff
path: root/src/tesseract/forces
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2011-01-28 18:52:51 +0000
committerJesse Morgan <jesse@jesterpm.net>2011-01-28 18:52:51 +0000
commitfc40e7f6e3165a002326c92401c17951b7048a32 (patch)
treeccbb0fa261c51de242cf32a3aa622c78103b352f /src/tesseract/forces
parent380952816905723a8f3a18104e18e92ba85b2b88 (diff)
And we now have a basic 3d world :D
Diffstat (limited to 'src/tesseract/forces')
-rw-r--r--src/tesseract/forces/Force.java29
-rw-r--r--src/tesseract/forces/Gravity.java49
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);
+ }
+
+}