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

其他游戏

开发平台:

Visual C++

  1. #ifndef AF_PATH
  2. #define AF_PATH
  3. #include "afVec3n.h"
  4. /// This class defines the basic path interface which all path classes have to implement.
  5. /**
  6.  *  Some of the get-methods are not constant, since
  7.  *  a path might want to cache request data
  8.  *  (section of last request, etc...)
  9.  */
  10. class afPath
  11. {
  12. public:
  13. /// Types of paths
  14. enum TYPE  {
  15. TYPE_NONE, /**<  Undefined Path Type  */
  16. TYPE_LINEAR /**<  Linear Path  */
  17. };
  18. /// Returns the interpolated position on the path
  19. /**
  20.  *  nPos must be in range [0.0-1.0]
  21.  */
  22. virtual afVec3 getPosition(float nPos) = 0;
  23. /// Returns the interpolated rotation on the path
  24. /**
  25.  *  nPos must be in range [0.0-1.0]
  26.  */
  27. virtual afVec3n getDirection(float nPos) = 0;
  28. /// Returns the interpolated position and rotation
  29. /**
  30.  *  This method is far more efficient than calling
  31.  *  getPosition() and getRotation() seperately
  32.  *  nPos must be in range [0.0-1.0]
  33.  *  Returns the index of the base vertex used
  34.  */
  35. virtual int getPosDir(float nPos, afVec3& nPosition, afVec3n& nDirection) = 0;
  36. /// Returns the type of the path
  37. virtual TYPE getType() const  {  return type;  }
  38. /// Returns the length of the path
  39. virtual float getLength() const = 0;
  40. protected:
  41. TYPE type;
  42. };
  43. typedef afPath* afPathPtr;
  44. #endif