extendedMove.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef _EXTENDEDMOVE_H_
  2. #define _EXTENDEDMOVE_H_
  3. #include "T3D/gameBase/moveManager.h"
  4. #include "math/mQuat.h"
  5. struct ExtendedMove : public Move
  6. {
  7. typedef Move Parent;
  8. enum Constants {
  9. MaxPositionsRotations = 3,
  10. MaxPositionBits = 16,
  11. MaxRotationBits = 16,
  12. };
  13. // Position is in millimeters
  14. F32 posX[MaxPositionsRotations], posY[MaxPositionsRotations], posZ[MaxPositionsRotations];
  15. S32 cposX[MaxPositionsRotations], cposY[MaxPositionsRotations], cposZ[MaxPositionsRotations];
  16. bool EulerBasedRotation[MaxPositionsRotations];
  17. F32 rotX[MaxPositionsRotations], rotY[MaxPositionsRotations], rotZ[MaxPositionsRotations], rotW[MaxPositionsRotations];
  18. // Network clamped rotation
  19. S32 crotX[MaxPositionsRotations], crotY[MaxPositionsRotations], crotZ[MaxPositionsRotations], crotW[MaxPositionsRotations];
  20. ExtendedMove();
  21. virtual void pack(BitStream *stream, const Move * move = NULL);
  22. virtual void unpack(BitStream *stream, const Move * move = NULL);
  23. virtual void clamp();
  24. virtual void unclamp();
  25. };
  26. extern const ExtendedMove NullExtendedMove;
  27. class ExtendedMoveManager
  28. {
  29. public:
  30. static F32 mPosX[ExtendedMove::MaxPositionsRotations];
  31. static F32 mPosY[ExtendedMove::MaxPositionsRotations];
  32. static F32 mPosZ[ExtendedMove::MaxPositionsRotations];
  33. static bool mRotIsEuler[ExtendedMove::MaxPositionsRotations];
  34. static F32 mRotAX[ExtendedMove::MaxPositionsRotations];
  35. static F32 mRotAY[ExtendedMove::MaxPositionsRotations];
  36. static F32 mRotAZ[ExtendedMove::MaxPositionsRotations];
  37. static F32 mRotAA[ExtendedMove::MaxPositionsRotations];
  38. static F32 mPosScale;
  39. static void init();
  40. };
  41. #endif // _EXTENDEDMOVE_H_