3#include <graphics/FrameCtrl.h>
4#include <utility/Angle3.h>
6#include <container/seadSafeArray.h>
7#include <heap/seadDisposer.h>
8#include <math/seadMatrix.h>
9#include <prim/seadRuntimeTypeInfo.h>
10#include <prim/seadSafeString.h>
38 static_assert(
sizeof(
Type) == 4);
172 static_assert(
sizeof(
HeadType) == 4);
190 PlayerModelBase(
const sead::SafeString& model_res_key,
const sead::SafeString& anm_res_key);
199 virtual void setFootAnmImpl(
const ModelResource* anm_res,
const sead::SafeString& anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) = 0;
200 virtual void setBodyAnmImpl(
const ModelResource* anm_res,
const sead::SafeString& anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) = 0;
224 virtual void setAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
226 void setBodyAnm(s32 anm_id, f32 rate, f32 frame = 0.0f, f32 blend_duration = 0.0f);
231 void setLinkAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
233 void setRideAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
242 virtual bool getJumpAnmName(sead::BufferedSafeString* anm_name, s32 anm_id,
bool body);
316 virtual void getJointMtx(sead::Matrixf* mtx,
const sead::SafeString& name);
318 void getJointPos(sead::Vector3f* pos,
const sead::SafeString& name);
323 void calc(
const sead::Matrixf& mtx);
342 mFlag.set(cFlag_IsBubbleChibiYoshiShake);
354 mFlag.reset(cFlag_IsBubbleChibiYoshiShake);
364 return mFlag.isOn(cFlag_IsBalloonChibiYoshiFly);
369 return mFlag.isOn(cFlag_IsBubbleChibiYoshiShake);
374 mFlag.set(cFlag_IsStarAnm);
379 mFlag.reset(cFlag_IsStarAnm);
384 return mFlag.isOn(cFlag_IsStarAnm);
440 return mAnmFlag[type];
445 return mAnmFlag[cAnmFlagType_Main];
450 return mAnmFlag[cAnmFlagType_Body];
455 return mAnmFlag[type] & flag;
460 return isAnmFlag(type, 1 << bit);
465 return isAnmFlag(cAnmFlagType_Main, flag);
505 return isAnmFlag(1 << cAnmFlagBit_Dir_L | 1 << cAnmFlagBit_Dir_R);
540 return isAnmFlag(cAnmFlagType_Body, flag);
570 mFaceAngleOverrideFlag.change(flag, enable);
575 return mFaceAngleOverride;
580 mFaceAngleOverride = angle;
585 mFaceAngleOverride.x() = 0;
586 mFaceAngleOverride.y() = 0;
587 mFaceAngleOverride.z() = 0;
592 mFaceAngleOverrideFlag.makeAllZero();
597 mFlag.set(cFlag_IsOnHDokan);
602 mFlag.reset(cFlag_IsOnHDokan);
607 return mFlag.isOn(cFlag_IsOnHDokan);
612 mFlag.set(cFlag_IsWaitL);
617 mFlag.set(cFlag_IsWaitR);
622 mFlag.reset(cFlag_IsWaitL);
623 mFlag.reset(cFlag_IsWaitR);
628 return mFlag.isOn(cFlag_IsWaitL);
633 return mFlag.isOn(cFlag_IsWaitR);
638 mFlag.set(cFlag_IsRideCloudWait);
643 mFlag.reset(cFlag_IsRideCloudWait);
648 return mFlag.isOn(cFlag_IsRideCloudWait);
653 mFlag.set(cFlag_IsRideLiftWait);
658 mFlag.reset(cFlag_IsRideLiftWait);
663 return mFlag.isOn(cFlag_IsRideLiftWait);
Definition AnimModel.h:19
Definition ModelResource.h:13
Definition PlayerModelBase.h:16
void resetFaceAngleOverride()
Definition PlayerModelBase.h:583
virtual void setTexAnmType(TexAnmType type)=0
@ cSklAnm_Main
Definition PlayerModelBase.h:182
@ cSklAnm_BaseNum
Definition PlayerModelBase.h:184
@ cSklAnm_Body
Definition PlayerModelBase.h:183
bool isBalloonChibiYoshiFly() const
Definition PlayerModelBase.h:362
bool isDirAnm() const
Definition PlayerModelBase.h:503
TexAnmType mTexAnmType
Definition PlayerModelBase.h:680
SceneType mSceneType
Definition PlayerModelBase.h:679
void setRateImpl(s32 skl_anm_idx, f32 rate)
void changeFaceAngleOverrideFlag(FaceAngleOverrideFlag flag, bool enable)
Definition PlayerModelBase.h:568
bool isAnmLoopFrameImpl(s32 skl_anm_idx)
virtual void calcImpl()=0
PlayerModelBase(const sead::SafeString &model_res_key, const sead::SafeString &anm_res_key)
void calc(const sead::Matrixf &mtx)
bool isAnmFlag(AnmFlagType type, u32 flag) const
Definition PlayerModelBase.h:453
bool checkBodyFrame(f32 frame)
void onWaitL()
Definition PlayerModelBase.h:610
bool isHangAnm() const
Definition PlayerModelBase.h:483
virtual void calc2Impl()=0
virtual void setAnm(s32 anm_id, f32 rate, f32 blend_duration=0.0f, f32 frame=0.0f)
virtual void setModelRenderPass(s32 idx_opa, s32 idx_xlu)=0
void setBodyAnm(s32 anm_id, f32 rate, f32 frame=0.0f, f32 blend_duration=0.0f)
AnmFlagType
Definition PlayerModelBase.h:152
@ cAnmFlagType_Num
Definition PlayerModelBase.h:156
@ cAnmFlagType_Main
Definition PlayerModelBase.h:153
@ cAnmFlagType_Unknown
Definition PlayerModelBase.h:155
@ cAnmFlagType_Body
Definition PlayerModelBase.h:154
sead::Vector3f mHeadTopPos
Definition PlayerModelBase.h:676
bool isPropellerPersonalAnm() const
Definition PlayerModelBase.h:533
void setRideAnm(s32 anm_id, f32 rate, f32 blend_duration=0.0f, f32 frame=0.0f)
void setJumpAnmRand(RndType rnd_type)
DarkTargetType
Definition PlayerModelBase.h:96
@ cDarkTargetType_TevKColor3
Definition PlayerModelBase.h:98
@ cDarkTargetType_InvTevColor0
Definition PlayerModelBase.h:97
virtual void getJointMtx(sead::Matrixf *mtx, const sead::SafeString &name)
ModelResource * mModelRes
Definition PlayerModelBase.h:667
f32 mStoopOffsetTarget
Definition PlayerModelBase.h:684
f32 mStoopOffsetBlendFramesRemaining
Definition PlayerModelBase.h:685
void offBalloonChibiYoshiFly()
void setFrameImpl(s32 skl_anm_idx, f32 frame)
bool isWaitR() const
Definition PlayerModelBase.h:631
virtual f32 getAnmBlendDuration(s32 anm_id)
virtual f32 getAnmRate(s32 anm_id)
void onBubbleChibiYoshiShake()
Definition PlayerModelBase.h:340
Type mType
Definition PlayerModelBase.h:678
bool isRideLiftWait() const
Definition PlayerModelBase.h:661
bool isAnmFlagBit(AnmFlagType type, AnmFlagBit bit) const
Definition PlayerModelBase.h:458
FaceAngleOverrideFlag
Definition PlayerModelBase.h:161
@ cFaceAngleOverrideFlag_Y
Definition PlayerModelBase.h:163
@ cFaceAngleOverrideFlag_X
Definition PlayerModelBase.h:162
@ cFaceAngleOverrideFlag_Z
Definition PlayerModelBase.h:164
s32 mAnm
Definition PlayerModelBase.h:670
bool isAnmFlagBit(AnmFlagBit bit) const
Definition PlayerModelBase.h:468
u32 getAnmFlag() const
Definition PlayerModelBase.h:443
RndType
Definition PlayerModelBase.h:175
@ cRndType_Uniform
Definition PlayerModelBase.h:176
@ cRndType_RightSkew
Definition PlayerModelBase.h:177
bool checkFrame(f32 frame)
ModelResource * getAnmResFile() const
Definition PlayerModelBase.h:408
virtual bool setPersonalAnm(ModelResource **anm_res, sead::BufferedSafeString *anm_name, s32 anm_id, bool body)=0
ModelResource * mAnmRes
Definition PlayerModelBase.h:668
void getJointMtx(sead::Matrixf *mtx, s32 index)
sead::Matrixf mMtxSr
Definition PlayerModelBase.h:675
bool isCarryBodyAnm() const
Definition PlayerModelBase.h:548
bool isBodyAnmFlag(u32 flag) const
Definition PlayerModelBase.h:538
static const sead::SafeString c2JumpedAnmVarDt[]
Definition PlayerModelBase.h:704
sead::Matrixf mMtxSrt
Definition PlayerModelBase.h:674
sead::BitFlag32 mFaceAngleOverrideFlag
Definition PlayerModelBase.h:694
sead::BitFlag32 mFlag
Definition PlayerModelBase.h:690
sead::Vector3f mHeadPos
Definition PlayerModelBase.h:677
bool isCourseSelectScene()
bool isPenguinPersonalAnm() const
Definition PlayerModelBase.h:528
virtual void offStarAnm()
Definition PlayerModelBase.h:377
bool isWaitL() const
Definition PlayerModelBase.h:626
void copyLinkAnm(f32 blend_duration)
s32 getAnmID() const
Definition PlayerModelBase.h:398
void onBalloonChibiYoshiFly()
void offBubbleChibiYoshiShake()
Definition PlayerModelBase.h:352
void getJointPos(sead::Vector3f *pos, s32 index)
u32 getBodyAnmFlag() const
Definition PlayerModelBase.h:448
bool isOnHDokan() const
Definition PlayerModelBase.h:605
virtual ~PlayerModelBase()
Angle3 mFaceAngleOverride
Definition PlayerModelBase.h:693
s32 mDefaultExpressionTimer
Definition PlayerModelBase.h:681
bool isBodyAnmFlagBit(AnmFlagBit bit) const
Definition PlayerModelBase.h:543
s32 mJumpIndexPrev
Definition PlayerModelBase.h:692
f32 mOffsetY
Definition PlayerModelBase.h:682
bool isSitAnm() const
Definition PlayerModelBase.h:473
void setSlopeBodyAnm(f32 blend_duration)
bool isJumpAnm() const
Definition PlayerModelBase.h:498
void setRateDirect(f32 rate)
void setLinkAnm(s32 anm_id, f32 rate, f32 blend_duration=0.0f, f32 frame=0.0f)
virtual void releaseBodyAnm(f32 blend_duration)=0
static const sead::SafeString cJumpAnmVarDt[]
Definition PlayerModelBase.h:700
f32 getFrameDirect()
Definition PlayerModelBase.h:278
bool isAnmFlag(u32 flag) const
Definition PlayerModelBase.h:463
void offOnHDokan()
Definition PlayerModelBase.h:600
u32 getAnmFlag(AnmFlagType type) const
Definition PlayerModelBase.h:438
const sead::Matrixf & getMtxSr() const
Definition PlayerModelBase.h:413
void setFaceAngleOverride(const Angle3 &angle)
Definition PlayerModelBase.h:578
bool isSwimAnm() const
Definition PlayerModelBase.h:493
TexAnmType
Definition PlayerModelBase.h:52
@ cTexAnmType_Wait
Definition PlayerModelBase.h:54
@ cTexAnmType_DmEscortWait
Definition PlayerModelBase.h:86
@ cTexAnmType_CoinComp
Definition PlayerModelBase.h:67
@ cTexAnmType_PropellerGoalPutOnCap
Definition PlayerModelBase.h:56
@ cTexAnmType_KinopioDmShoot
Definition PlayerModelBase.h:84
@ cTexAnmType_BalloonWaitDisconnect
Definition PlayerModelBase.h:75
@ cTexAnmType_DmEnding1Wait
Definition PlayerModelBase.h:88
@ cTexAnmType_DmGlad
Definition PlayerModelBase.h:68
@ cTexAnmType_DmEscort
Definition PlayerModelBase.h:85
@ cTexAnmType_MusaGoalPutOnCap
Definition PlayerModelBase.h:58
@ cTexAnmType_DmGlad2
Definition PlayerModelBase.h:69
@ cTexAnmType_DmSad
Definition PlayerModelBase.h:74
@ cTexAnmType_DmCourseIn
Definition PlayerModelBase.h:78
@ cTexAnmType_KinopioMGGlad
Definition PlayerModelBase.h:76
@ cTexAnmType_CourseIn
Definition PlayerModelBase.h:66
@ cTexAnmType_Num
Definition PlayerModelBase.h:90
@ cTexAnmType_MusaRideGoalPutOnCap
Definition PlayerModelBase.h:60
@ cTexAnmType_PenguinRideGoalPutOnCap
Definition PlayerModelBase.h:59
@ cTexAnmType_GoalPutOnCap
Definition PlayerModelBase.h:55
@ cTexAnmType_Jump
Definition PlayerModelBase.h:63
@ cTexAnmType_DmEnding1
Definition PlayerModelBase.h:87
@ cTexAnmType_Dam
Definition PlayerModelBase.h:62
@ cTexAnmType_DmSad2
Definition PlayerModelBase.h:79
@ cTexAnmType_KinopioDmHail
Definition PlayerModelBase.h:81
@ cTexAnmType_DmGlad3Wait
Definition PlayerModelBase.h:72
@ cTexAnmType_Throw
Definition PlayerModelBase.h:65
@ cTexAnmType_GoalPutOnCap_2
Definition PlayerModelBase.h:61
@ cTexAnmType_PenguinGoalPutOnCap
Definition PlayerModelBase.h:57
@ cTexAnmType_Jumped
Definition PlayerModelBase.h:64
@ cTexAnmType_WaitStatic
Definition PlayerModelBase.h:53
@ cTexAnmType_DmGlad4Wait
Definition PlayerModelBase.h:73
@ cTexAnmType_DmGlad2Wait
Definition PlayerModelBase.h:70
@ cTexAnmType_DmGlad3
Definition PlayerModelBase.h:71
@ cTexAnmType_KinopioDmAwawa
Definition PlayerModelBase.h:83
@ cTexAnmType_KinopioDmThanksGift
Definition PlayerModelBase.h:80
@ cTexAnmType_KinopioDmDamage
Definition PlayerModelBase.h:82
@ cTexAnmType_DmEnding2
Definition PlayerModelBase.h:89
@ cTexAnmType_KinopioMGSad
Definition PlayerModelBase.h:77
void offRideLiftWait()
Definition PlayerModelBase.h:656
PlayerModelBase * mLinkPlayer
Definition PlayerModelBase.h:673
f32 getRateImpl(s32 skl_anm_idx)
AnmFlagBit
Definition PlayerModelBase.h:124
@ cAnmFlagBit_Personal_Propeller
Definition PlayerModelBase.h:147
@ cAnmFlagBit_7
Definition PlayerModelBase.h:132
@ cAnmFlagBit_Sit
Definition PlayerModelBase.h:125
@ cAnmFlagBit_HangCliff
Definition PlayerModelBase.h:128
@ cAnmFlagBit_Personal_Musa
Definition PlayerModelBase.h:145
@ cAnmFlagBit_8
Definition PlayerModelBase.h:133
@ cAnmFlagBit_5
Definition PlayerModelBase.h:130
@ cAnmFlagBit_Personal_Kinopio
Definition PlayerModelBase.h:144
@ cAnmFlagBit_Dir_L
Definition PlayerModelBase.h:139
@ cAnmFlagBit_Carry
Definition PlayerModelBase.h:126
@ cAnmFlagBit_Hang
Definition PlayerModelBase.h:127
@ cAnmFlagBit_16
Definition PlayerModelBase.h:141
@ cAnmFlagBit_9
Definition PlayerModelBase.h:134
@ cAnmFlagBit_Personal_Luigi
Definition PlayerModelBase.h:143
@ cAnmFlagBit_Swim
Definition PlayerModelBase.h:129
@ cAnmFlagBit_Dir_R
Definition PlayerModelBase.h:140
@ cAnmFlagBit_Jump
Definition PlayerModelBase.h:135
@ cAnmFlagBit_Slope
Definition PlayerModelBase.h:137
@ cAnmFlagBit_Personal_Penguin
Definition PlayerModelBase.h:146
@ cAnmFlagBit_6
Definition PlayerModelBase.h:131
virtual void setCarryBodyAnm(f32 blend_duration, bool bubble_reset_frame)=0
void onRideLiftWait()
Definition PlayerModelBase.h:651
bool isSlopeBodyAnm() const
Definition PlayerModelBase.h:558
bool isCarryAnm() const
Definition PlayerModelBase.h:478
f32 mStoopOffsetCurrent
Definition PlayerModelBase.h:683
s32 mBodyAnm
Definition PlayerModelBase.h:671
SceneType getSceneType() const
Definition PlayerModelBase.h:428
static const s32 cJumpMax
Definition PlayerModelBase.h:697
SceneType
Definition PlayerModelBase.h:41
@ cSceneType_2D
Definition PlayerModelBase.h:45
@ cSceneType_CourseSelect
Definition PlayerModelBase.h:43
@ cSceneType_Course
Definition PlayerModelBase.h:42
@ cSceneType_Unknown
Definition PlayerModelBase.h:44
@ cSceneType_Num
Definition PlayerModelBase.h:46
bool mCarryStateChanged
Definition PlayerModelBase.h:695
sead::Vector3f * getHeadTopPosP()
Definition PlayerModelBase.h:418
HeadType
Definition PlayerModelBase.h:168
@ cHeadType_BonusCap
Definition PlayerModelBase.h:170
@ cHeadType_Normal
Definition PlayerModelBase.h:169
void onOnHDokan()
Definition PlayerModelBase.h:595
bool isHangCliffAnm() const
Definition PlayerModelBase.h:488
virtual void setDark(DarkTargetType type, f32 value)=0
bool isBubbleChibiYoshiShake() const
Definition PlayerModelBase.h:367
virtual void setBodyRate(f32 rate)
virtual void setBodyAnmImpl(const ModelResource *anm_res, const sead::SafeString &anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration)=0
void offWait()
Definition PlayerModelBase.h:620
bool isRideCloudWait() const
Definition PlayerModelBase.h:646
bool isBodyAnmLoopFrame()
bool isMusaPersonalAnm() const
Definition PlayerModelBase.h:523
bool isAnmStopImpl(s32 skl_anm_idx)
bool isJumpBodyAnm() const
Definition PlayerModelBase.h:553
bool isStarAnm() const
Definition PlayerModelBase.h:382
virtual void setModelG3dRenderFlag(u32 flag)=0
s32 mRideAnm
Definition PlayerModelBase.h:672
virtual void setFootAnmImpl(const ModelResource *anm_res, const sead::SafeString &anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration)=0
f32 getFrameImpl(s32 skl_anm_idx)
virtual void setBodyFrame(f32 frame)
bool isDirAnmL() const
Definition PlayerModelBase.h:508
ModelResource * getModelResFile() const
Definition PlayerModelBase.h:403
void getJointPos(sead::Vector3f *pos, const sead::SafeString &name)
void onRideCloudWait()
Definition PlayerModelBase.h:636
bool isLuigiPersonalAnm() const
Definition PlayerModelBase.h:518
sead::Vector3f * getHeadPosP()
Definition PlayerModelBase.h:423
virtual f32 getBaseScale()=0
virtual void onStarAnm()
Definition PlayerModelBase.h:372
static const sead::SafeString c2JumpAnmVarDt[]
Definition PlayerModelBase.h:702
AnimModel * mModel
Definition PlayerModelBase.h:669
void onWaitR()
Definition PlayerModelBase.h:615
void setFrameDirect(f32 frame)
bool checkFrameImpl(s32 skl_anm_idx, f32 frame)
void offRideCloudWait()
Definition PlayerModelBase.h:641
bool isDirAnmR() const
Definition PlayerModelBase.h:513
Flag
Definition PlayerModelBase.h:103
@ cFlag_IsStarAnm
Definition PlayerModelBase.h:113
@ cFlag_Bit9
Definition PlayerModelBase.h:112
@ cFlag_None
Definition PlayerModelBase.h:120
@ cFlag_Bit4
Definition PlayerModelBase.h:108
@ cFlag_IsRideCloudWait
Definition PlayerModelBase.h:117
@ cFlag_Bit5
Definition PlayerModelBase.h:109
@ cFlag_IsWaitL
Definition PlayerModelBase.h:115
@ cFlag_Bit6
Definition PlayerModelBase.h:110
@ cFlag_IsBubbleChibiYoshiShake
Definition PlayerModelBase.h:107
@ cFlag_IsWaitR
Definition PlayerModelBase.h:116
@ cFlag_IsBalloonChibiYoshiFly
Definition PlayerModelBase.h:106
@ cFlag_IsRideLiftWait
Definition PlayerModelBase.h:118
@ cFlag_IsCarry
Definition PlayerModelBase.h:104
@ cFlag_IsOnHDokan
Definition PlayerModelBase.h:114
@ cFlag_IsLiftUp
Definition PlayerModelBase.h:105
sead::SafeArray< u32, cAnmFlagType_Num > mAnmFlag
Definition PlayerModelBase.h:689
const Angle3 & getFaceAngleOverride() const
Definition PlayerModelBase.h:573
virtual bool getJumpAnmName(sead::BufferedSafeString *anm_name, s32 anm_id, bool body)
virtual void setAnmBind()=0
virtual bool setPersonalRideAnm(ModelResource **anm_res, sead::BufferedSafeString *anm_name, s32 anm_id)=0
bool isPenguinPersonalBodyAnm() const
Definition PlayerModelBase.h:563
bool isValidSceneType() const
Definition PlayerModelBase.h:433
void resetFaceAngleOverrideFlag()
Definition PlayerModelBase.h:590
s32 mJumpIndex
Definition PlayerModelBase.h:691