extendedMove.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 = 13,
  11. MaxRotationBits = 16,
  12. };
  13. // Position is in millimeters
  14. S32 posX[MaxPositionsRotations], posY[MaxPositionsRotations], posZ[MaxPositionsRotations];
  15. bool EulerBasedRotation[MaxPositionsRotations];
  16. F32 rotX[MaxPositionsRotations], rotY[MaxPositionsRotations], rotZ[MaxPositionsRotations], rotW[MaxPositionsRotations];
  17. // Network clamped rotation
  18. S32 crotX[MaxPositionsRotations], crotY[MaxPositionsRotations], crotZ[MaxPositionsRotations], crotW[MaxPositionsRotations];
  19. ExtendedMove();
  20. virtual void pack(BitStream *stream, const Move * move = NULL);
  21. virtual void unpack(BitStream *stream, const Move * move = NULL);
  22. virtual void clamp();
  23. virtual void unclamp();
  24. };
  25. extern const ExtendedMove NullExtendedMove;
  26. class ExtendedMoveManager
  27. {
  28. public:
  29. static S32 mPosX[ExtendedMove::MaxPositionsRotations];
  30. static S32 mPosY[ExtendedMove::MaxPositionsRotations];
  31. static S32 mPosZ[ExtendedMove::MaxPositionsRotations];
  32. static bool mRotIsEuler[ExtendedMove::MaxPositionsRotations];
  33. static F32 mRotAX[ExtendedMove::MaxPositionsRotations];
  34. static F32 mRotAY[ExtendedMove::MaxPositionsRotations];
  35. static F32 mRotAZ[ExtendedMove::MaxPositionsRotations];
  36. static F32 mRotAA[ExtendedMove::MaxPositionsRotations];
  37. static void init();
  38. };
  39. #endif // _EXTENDEDMOVE_H_