VuDriver

Subclass: VuDeadReckon & VuMaster


public:
  virtual ~VuDriver();

  virtual int Type() = 0;

  virtual void NoExec(VU_TIME timestamp) = 0;
  virtual void Exec(VU_TIME timestamp) = 0;
  virtual void AutoExec(VU_TIME timestamp) = 0;

  virtual VU_ERRCODE Handle(VuEvent *event) = 0;
  virtual VU_ERRCODE Handle(VuFullUpdateEvent *event) = 0;
  virtual VU_ERRCODE Handle(VuPositionUpdateEvent *event) = 0;

  virtual void AlignTimeAdd(VU_TIME timeDelta) = 0;
  virtual void AlignTimeSubtract(VU_TIME timeDelta) = 0;
  virtual void ResetLastUpdateTime (VU_TIME time) = 0;

  // Accessor
  VuEntity *Entity() { return entity_; }

  // AI hooks
  virtual int AiType();         // returns 0 if no AI is present
  virtual VU_BOOL AiExec();     // executes Ai component
  virtual void *AiPointer();    // returns pointer to Ai data (game specific)

  // debug hooks
  virtual int DebugString(char *str);

protected:
  VuDriver(VuEntity *entity);

// Data
protected:
  VuEntity *entity_;