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

其他游戏

开发平台:

Visual C++

  1. #ifndef AF_TRANSFORM
  2. #define AF_TRANSFORM
  3. #include "afVec3.h"
  4. #include "afQuat.h"
  5. //#include <D3d8types.h>
  6. class afTransform
  7. {
  8. public:
  9. afTransform() { pos.x=pos.y=pos.z=0.0f; scale.x=scale.y=scale.z=1.0f; dirty=true; }
  10. /***** combine Transforms ... Caution!!! Quaternion-Combination not commutative ******/
  11. afTransform& operator*=(const afTransform& t); //result= Objekt * t
  12. afTransform& operator>=(const afTransform& t); //result= t * Objekt
  13. afTransform& operator= (const afTransform& t);
  14. void setPosition (const afVec3& nPos) {pos = nPos; dirty=true;}
  15. void setScale  (const afVec3& nScale) {scale = nScale; dirty=true;}
  16. void setRotation (const afQuat& nRot) {rot = nRot; dirty=true;}
  17. void move   (const afVec3& move) {pos+=move; dirty=true;}
  18. void scalef (const afVec3& scalefactor) {scale*=scalefactor; dirty=true;}
  19. void rotate (const afQuat& drot) {rot*=drot; dirty=true;}
  20. void rotate (const afVec3& drot) {afQuat quat(drot); rotate(quat); dirty=true;}
  21. const afVec3& getPosition() const  { return pos; }
  22. const afVec3& getScale   () const  { return scale;}
  23. const afQuat& getRotation() const  { return rot; }
  24. void updateMatrix();
  25. const afMatrix& getMatrix();
  26. //bool isDirty()  { return dirty; }
  27. protected:
  28. afVec3 pos, scale;
  29. afQuat rot;
  30. afMatrix matrix;
  31. bool dirty;
  32. };
  33. #endif