afPathLinear.h
上传用户:kaiguan
上传日期:2007-10-28
资源大小:1074k
文件大小:1k
源码类别:

其他游戏

开发平台:

Visual C++

  1. #ifndef AF_PATHLINEAR
  2. #define AF_PATHLINEAR
  3. #include "afPath.h"
  4. #include "afList.h"
  5. #include "afString.h"
  6. /// This class implements the basic afPath interface.
  7. /**
  8.  *  It provides a path contructed of linear subsection
  9.  *  (polyline). the rotation can be interpolated if requested.
  10.  */
  11. class afPathLinear : public afPath
  12. {
  13. public:
  14. afPathLinear();
  15. /// Loads a path from the file
  16. /**
  17.  *  This method load a path from a file
  18.  *  Each line must contain three float values.
  19.  *  In order to support 3dsMAX the y & z values
  20.  *  are exchanged.
  21.  */
  22. bool load(const char* nFileName);
  23. /// Enables interpolation of the rotation
  24. /**
  25.  *  Not implemented yet.
  26.  */
  27. void setInterpolateRotation(bool nEnable)  {  interpolRot = nEnable;  }
  28. /// Returns the number of corners, which build this linear path
  29. int getNumCorners() const  {  return posList.getSize();  }
  30. /// Returns a specific corner
  31. const afVec3& getCorner(int nIndex) const  {  return posList[nIndex];  }
  32. // implementation of afPath interface
  33. virtual afVec3 getPosition(float nPos);
  34. virtual afVec3n getDirection(float nPos);
  35. virtual int getPosDir(float nPos, afVec3& nPosition, afVec3n& nDirection);
  36. virtual float getLength() const  {  return lenList.getTail();  }
  37. private:
  38. afString name;
  39. bool interpolRot;
  40. afList<afVec3> posList;
  41. afList<float> lenList;
  42. };
  43. #endif