| 1 | #pragma once |
| 2 | |
| 3 | #include <prim/seadSafeString.h> |
| 4 | |
| 5 | #include "Player/PlayerAnimFrameCtrl.h" |
| 6 | |
| 7 | namespace al { |
| 8 | class LiveActor; |
| 9 | } |
| 10 | class PlayerModelHolder; |
| 11 | |
| 12 | class PlayerAnimator { |
| 13 | public: |
| 14 | void startAnim(const sead::SafeString& animName); |
| 15 | void startSubAnim(const sead::SafeString& animName); |
| 16 | void startSubAnimOnlyAir(const sead::SafeString& animName); |
| 17 | void startUpperBodyAnimAndHeadVisKeep(const sead::SafeString& animName); |
| 18 | void startAnimDead(); // chooses one of the 5 death animations and starts that animation |
| 19 | void endSubAnim(); |
| 20 | |
| 21 | void updateAnimFrame(); |
| 22 | void clearUpperBodyAnim(); |
| 23 | |
| 24 | bool isAnim(const sead::SafeString& animName) const; |
| 25 | bool isAnimEnd() const; |
| 26 | bool isSubAnim(const sead::SafeString& subAnimName) const; |
| 27 | bool isSubAnimEnd() const; |
| 28 | bool isUpperBodyAnimAttached() const; |
| 29 | |
| 30 | f32 getAnimFrame() const; |
| 31 | f32 getAnimFrameMax() const; |
| 32 | f32 getAnimFrameRate() const; |
| 33 | f32 getSubAnimFrame() const; |
| 34 | f32 getSubAnimFrameMax() const; |
| 35 | f32 getBlendWeight(s32 index); |
| 36 | |
| 37 | void setAnimRate(f32); |
| 38 | void setAnimRateCommon(f32); |
| 39 | void setAnimFrame(f32); |
| 40 | void setAnimFrameCommon(f32); |
| 41 | void setSubAnimFrame(f32); |
| 42 | void setSubAnimRate(f32); |
| 43 | void setBlendWeight(f32, f32, f32, f32, f32, f32); |
| 44 | void setModelAlpha(f32); |
| 45 | void setPartsAnimRate(f32, const char*); |
| 46 | void setPartsAnimFrame(f32, const char*); |
| 47 | |
| 48 | bool isSubAnimPlaying() const { return mIsSubAnimPlaying; } |
| 49 | |
| 50 | private: |
| 51 | PlayerModelHolder* mModelHolder; |
| 52 | al::LiveActor* mPlayerDeco; |
| 53 | void* _10; |
| 54 | PlayerAnimFrameCtrl* mAnimFrameCtrl; |
| 55 | sead::FixedSafeString<64> mCurAnim; |
| 56 | sead::FixedSafeString<64> mCurSubAnim; |
| 57 | sead::FixedSafeString<64> mCurUpperBodyAnim; |
| 58 | sead::FixedSafeString<64> _128; |
| 59 | char padding_180[0x1A2 - 0x180]; |
| 60 | bool mIsSubAnimPlaying; |
| 61 | }; |
| 62 | |