Clone of PhatAC @ https://github.com/floaterxk/PhatAC

TurbineAnimationSet.h 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #pragma once
  2. #include "TurbineObject.h"
  3. struct CombatStance
  4. {
  5. CombatStance()
  6. {
  7. }
  8. CombatStance(WORD wIndex, WORD wSeq, DWORD dwType = 0x41000003)
  9. {
  10. m_wIndex = wIndex;
  11. m_wSeq = wSeq;
  12. m_dwType = dwType;
  13. }
  14. WORD m_wIndex;
  15. WORD m_wSeq;
  16. DWORD m_dwType;
  17. };
  18. struct AnimationEntry
  19. {
  20. AnimationEntry()
  21. {
  22. }
  23. AnimationEntry(DWORD dwID, DWORD dwSF, DWORD dwEF, float fSpeed, Vector vTranslation = Vector(0, 0, 0), Vector vRotation = Vector(0, 0, 0))
  24. {
  25. m_dwAnimID = dwID;
  26. m_dwStartFrame = dwSF;
  27. m_dwEndFrame = dwEF;
  28. m_fSpeed = fSpeed;
  29. m_vTranslation = vTranslation;
  30. m_vRotation = vRotation;
  31. };
  32. DWORD m_dwAnimID;
  33. DWORD m_dwStartFrame;
  34. DWORD m_dwEndFrame;
  35. float m_fSpeed;
  36. Vector m_vTranslation;
  37. Vector m_vRotation;
  38. };
  39. typedef std::list<AnimationEntry> AnimationSequence;
  40. struct PivotMotionEntry
  41. {
  42. PivotMotionEntry(Vector vTranslate = Vector(0, 0, 0), Vector vRotate = Vector(0, 0, 0))
  43. {
  44. m_vTranslation = vTranslate;
  45. m_vRotation = vRotate;
  46. };
  47. Vector m_vTranslation;
  48. Vector m_vRotation;
  49. };
  50. typedef std::map<WORD, CombatStance> StanceMap;
  51. typedef std::map<WORD, std::map<WORD, AnimationEntry>>AnimationMap;
  52. typedef std::map<WORD, std::map<WORD, PivotMotionEntry>>PivotMotionMap;
  53. typedef std::map<WORD, std::map<WORD, std::map<DWORD, AnimationSequence>>> SequenceMap;
  54. class TurbineAnimationSet : public TurbineObject
  55. {
  56. public:
  57. TurbineAnimationSet(DWORD dwID);
  58. ~TurbineAnimationSet();
  59. void Initialize(BYTE *pbData, DWORD dwLength);
  60. BYTE *InitializeCombatStances(BYTE *pbData);
  61. BYTE *InitializeAnimations(BYTE *pbData);
  62. BYTE *InitializeSequences(BYTE *pbData);
  63. AnimationEntry *LookupAnimation(WORD wStance, WORD wIndex);
  64. private:
  65. CombatStance m_csDefault;
  66. StanceMap m_mCombatStances;
  67. AnimationMap m_mAnimations;
  68. PivotMotionMap m_mPivotMotions;
  69. SequenceMap m_mSequences;
  70. };
  71. typedef TurbineAnimationSet ANIMATIONSET;