--- a/src/proto2/Physics.cc Tue Nov 18 22:54:28 2008 +0000
+++ b/src/proto2/Physics.cc Tue Nov 18 23:00:39 2008 +0000
@@ -90,6 +90,10 @@
}
}
+void PhysicsObject::integrate(Vector force, uint16_t dt) {
+ // TODO
+}
+
void PhysicsObject::applyForce (Vector force, uint16_t dt) {
Vector oldVelocity = velocity;
--- a/src/proto2/Physics.hh Tue Nov 18 22:54:28 2008 +0000
+++ b/src/proto2/Physics.hh Tue Nov 18 23:00:39 2008 +0000
@@ -12,44 +12,49 @@
class PhysicsWorld {
friend class PhysicsObject;
-
- private:
- CL_Timer tick_timer;
+
+private:
+ CL_Timer tick_timer;
+
+protected:
+ std::vector<PhysicsObject*> objects;
+ Vector gravity;
+ Vector dimensions;
+
+ CL_SlotContainer slots;
+
+ PhysicsWorld (Vector gravity, Vector dimensions);
+
+public:
+ void addObject (PhysicsObject *object);
- protected:
- std::vector<PhysicsObject*> objects;
- Vector gravity;
- Vector dimensions;
-
- CL_SlotContainer slots;
-
- PhysicsWorld (Vector gravity, Vector dimensions);
-
- public:
- void addObject (PhysicsObject *object);
-
- void tick (void);
+ void tick (void);
};
class PhysicsObject {
- protected:
- PhysicsWorld &world;
- float mass;
- Vector position;
- Vector velocity;
+protected:
+ PhysicsWorld &world;
+ float mass;
+ Vector position;
+ Vector velocity;
- PhysicsObject (PhysicsWorld &world, float mass, Vector position, Vector velocity);
+ PhysicsObject (PhysicsWorld &world, float mass, Vector position, Vector velocity);
+
+ virtual void applyForce (Vector force, uint16_t dt);
+ void updatePhysics (Vector position, Vector velocity);
+
+private:
+ void updatePosition (void);
- virtual void applyForce (Vector force, uint16_t dt);
- void updatePhysics (Vector position, Vector velocity);
+ /**
+ * Use RK4 to integrate the effects of force over a time intervall.
+ */
+ void integrate(Vector force, uint16_t dt);
- private:
- void updatePosition (void);
-
- public:
- Vector getPosition (void);
-
- void tick (void);
+public:
+ Vector getPosition (void);
+
+ void tick (void);
};
#endif