#ifndef _boid_h_
#define _boid_h_

#include <dms/dms.h>
#include "boidSpecies1.h"


class boid : public dms::Object
    {
    public:
     boid(boidSpecies *species);
     void update(void);
     const dms::Vector3& position(void) { return position_; }
     const dms::Vector3& velocity(void) { return velocity_; }
     GLfloat heading(void);
     void highlightNeighbors(void);
    private:
     void computeAcceleration(void);
     void constrainVelocity(float min, float max);
     void constrainPosition(const dms::Vector3& min, const dms::Vector3& max);
     boidSpecies * species_;
     dms::Vector3 position_;
     dms::Vector3 velocity_;
     dms::Vector3 acceleration_;
     dms::SimpleTransform transform_;
    };

#endif
