src/proto2/Physics.hh
author saiam
Tue, 18 Nov 2008 18:29:05 +0000
changeset 48 fa1da22db8a0
parent 43 e510a5e62917
child 50 9e1a6506f5a1
permissions -rw-r--r--
It looks like physics could now work, but I doubt it...
#ifndef PHYSICS_HH
#define PHYSICS_HH

#include "Vector.hh"

const uint16_t PHYSICS_TICK_MS = 50;
const uint16_t PHYSICS_WORLD_WIDTH = 800;
const uint16_t PHYSICS_WORLD_HEIGHT = 600;
const Vector GRAVITY_FORCE(0,-1); 

class PhysicsWorld {
    protected:
        std::vector<PhysicsObject*> objects;
        Vector dimensions;
        
        PhysicsWorld (Vector dimensions);

    public:
        void addObject (PhysicsObject *object);

        void tick (void);
};

class PhysicsObject {
    protected:
        Vector position;
        Vector velocity;
        Vector force;
        uint16_t mass;
    
        PhysicsObject (mass, position, velocity, force);
    
    private:
        void updatePosition (void);

    protected:
        void applyForce (Vector force);
        void updatePhysics (Vector position, Vector velocity, Vector force);
    
    public:
        Vector getPosition (void);

        void tick (void);
};

void tickObject(PhysicsObject* obj);

#endif