#ifndef _PointMass_h_
#define _PointMass_h_

#include <dms/Vector3.h>

class PointMass
    {
    public:
     PointMass(const dms::Vector3& pos=dms::Vector3::Zero,float m=1.0);
     void clearForces(void);
     void applyForce(const dms::Vector3& force);
     void update(float dt);
     void freezePosition(void);
     void unfreezePosition(void);
     void setDrag(float d=0);
     inline float mass(void) { return mass_; }
     inline const dms::Vector3& position(void) { return position_; }
     inline const dms::Vector3& velocity(void) { return velocity_; }
     inline const dms::Vector3& acceleration(void) { return acceleration_; }
     inline bool frozen(void) { return frozen_; }
     inline float drag(void) { return drag_; }
     void setMass(float m);
     void setPosition(const dms::Vector3& pos);
     void setVelocity(const dms::Vector3& vel);
     void setAcceleration(const dms::Vector3& acc);
    private:
     float mass_;
     dms::Vector3 position_;
     dms::Vector3 velocity_;
     dms::Vector3 acceleration_;
     bool frozen_;
     float drag_;
    };

#endif

