Some drafts
authorsaiam
Tue, 18 Nov 2008 23:00:39 +0000
changeset 70 a5b7499219a4
parent 69 309c11126949
child 71 b5dbb83daa94
Some drafts
src/proto2/Physics.cc
src/proto2/Physics.hh
--- 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