/* 
   Project: coevolutionary GP moto driving
   Dana Vrajitoru
   driver_behave.h
   
   The class that handles behavior for the driver.
  
**/

#ifndef DRIVER_BEHAVE_H
#define DRIVER_BEHAVE_H

#include "driver_animate.h"

const int number_shots=5;

class Driver_behave: public Driver_animate {

 protected:
  Point3f shots[number_shots][vector_numbers];
  int all_frames, current_frame;

 public:
  // Constructor: nothing to be done for now.
  Driver_behave(float size=5);
  //Destructor: nothing to do for now.
  ~Driver_behave();

  // Set the total number of frames to start an animation.
  void set_frames(int frames_number = 0);

  // Save the current position, rotation and angles.
  void snapshot(int i=0);

  // Interpolate between snapshots
  void interpolate_shot(int start=0, int end=1);

  // Put the driver on a motorcycle. All we know is the size of the
  // motorcycle.
  void move_on_moto(float length, float width, float height);

  // Builds the display lists.
  virtual void draw();

  // Calls the display lists with appropriate transformations.
  virtual void display();
};

#endif
