1#pragma once
2
3#include <prim/seadSafeString.h>
4
5#include "Player/PlayerAnimFrameCtrl.h"
6
7namespace al {
8class LiveActor;
9}
10class PlayerModelHolder;
11
12class PlayerAnimator {
13public:
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
50private:
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