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>
39 static_assert(
sizeof(
Type) == 4);
173 static_assert(
sizeof(
HeadType) == 4);
191 PlayerModelBase(
const sead::SafeString& model_res_key,
const sead::SafeString& anm_res_key);
200 virtual void setFootAnmImpl(
const ModelResource* anm_res,
const sead::SafeString& anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) = 0;
201 virtual void setBodyAnmImpl(
const ModelResource* anm_res,
const sead::SafeString& anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) = 0;
225 virtual void setAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
227 void setBodyAnm(s32 anm_id, f32 rate, f32 frame = 0.0f, f32 blend_duration = 0.0f);
232 void setLinkAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
234 void setRideAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
243 virtual bool getJumpAnmName(sead::BufferedSafeString* anm_name, s32 anm_id,
bool body);
317 virtual void getJointMtx(sead::Matrixf* mtx,
const sead::SafeString& name);
319 void getJointPos(sead::Vector3f* pos,
const sead::SafeString& name);
324 void calc(
const sead::Matrixf& mtx);
343 mFlag.set(cFlag_IsBubbleChibiYoshiShake);
355 mFlag.reset(cFlag_IsBubbleChibiYoshiShake);
365 return mFlag.isOn(cFlag_IsBalloonChibiYoshiFly);
370 return mFlag.isOn(cFlag_IsBubbleChibiYoshiShake);
375 mFlag.set(cFlag_IsStarAnm);
380 mFlag.reset(cFlag_IsStarAnm);
385 return mFlag.isOn(cFlag_IsStarAnm);
441 return mAnmFlag[type];
446 return mAnmFlag[cAnmFlagType_Main];
451 return mAnmFlag[cAnmFlagType_Body];
456 return mAnmFlag[type] & flag;
461 return isAnmFlag(type, 1 << bit);
466 return isAnmFlag(cAnmFlagType_Main, flag);
506 return isAnmFlag(1 << cAnmFlagBit_Dir_L | 1 << cAnmFlagBit_Dir_R);
541 return isAnmFlag(cAnmFlagType_Body, flag);
571 mFaceAngleOverrideFlag.change(flag, enable);
576 return mFaceAngleOverride;
581 mFaceAngleOverride = angle;
586 mFaceAngleOverride.x() = 0;
587 mFaceAngleOverride.y() = 0;
588 mFaceAngleOverride.z() = 0;
593 mFaceAngleOverrideFlag.makeAllZero();
598 mFlag.set(cFlag_IsOnHDokan);
603 mFlag.reset(cFlag_IsOnHDokan);
608 return mFlag.isOn(cFlag_IsOnHDokan);
613 mFlag.set(cFlag_IsWaitL);
618 mFlag.set(cFlag_IsWaitR);
623 mFlag.reset(cFlag_IsWaitL);
624 mFlag.reset(cFlag_IsWaitR);
629 return mFlag.isOn(cFlag_IsWaitL);
634 return mFlag.isOn(cFlag_IsWaitR);
639 mFlag.set(cFlag_IsRideCloudWait);
644 mFlag.reset(cFlag_IsRideCloudWait);
649 return mFlag.isOn(cFlag_IsRideCloudWait);
654 mFlag.set(cFlag_IsRideLiftWait);
659 mFlag.reset(cFlag_IsRideLiftWait);
664 return mFlag.isOn(cFlag_IsRideLiftWait);
Definition AnimModel.h:19
Definition ModelResource.h:14
Definition PlayerModelBase.h:17
void resetFaceAngleOverride()
Definition PlayerModelBase.h:584
virtual void setTexAnmType(TexAnmType type)=0
@ cSklAnm_Main
Definition PlayerModelBase.h:183
@ cSklAnm_BaseNum
Definition PlayerModelBase.h:185
@ cSklAnm_Body
Definition PlayerModelBase.h:184
bool isBalloonChibiYoshiFly() const
Definition PlayerModelBase.h:363
bool isDirAnm() const
Definition PlayerModelBase.h:504
TexAnmType mTexAnmType
Definition PlayerModelBase.h:681
SceneType mSceneType
Definition PlayerModelBase.h:680
void setRateImpl(s32 skl_anm_idx, f32 rate)
void changeFaceAngleOverrideFlag(FaceAngleOverrideFlag flag, bool enable)
Definition PlayerModelBase.h:569
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:454
bool checkBodyFrame(f32 frame)
void onWaitL()
Definition PlayerModelBase.h:611
bool isHangAnm() const
Definition PlayerModelBase.h:484
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:153
@ cAnmFlagType_Num
Definition PlayerModelBase.h:157
@ cAnmFlagType_Main
Definition PlayerModelBase.h:154
@ cAnmFlagType_Unknown
Definition PlayerModelBase.h:156
@ cAnmFlagType_Body
Definition PlayerModelBase.h:155
sead::Vector3f mHeadTopPos
Definition PlayerModelBase.h:677
bool isPropellerPersonalAnm() const
Definition PlayerModelBase.h:534
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:97
@ cDarkTargetType_TevKColor3
Definition PlayerModelBase.h:99
@ cDarkTargetType_InvTevColor0
Definition PlayerModelBase.h:98
virtual void getJointMtx(sead::Matrixf *mtx, const sead::SafeString &name)
ModelResource * mModelRes
Definition PlayerModelBase.h:668
f32 mStoopOffsetTarget
Definition PlayerModelBase.h:685
f32 mStoopOffsetBlendFramesRemaining
Definition PlayerModelBase.h:686
void offBalloonChibiYoshiFly()
void setFrameImpl(s32 skl_anm_idx, f32 frame)
bool isWaitR() const
Definition PlayerModelBase.h:632
virtual f32 getAnmBlendDuration(s32 anm_id)
virtual f32 getAnmRate(s32 anm_id)
void onBubbleChibiYoshiShake()
Definition PlayerModelBase.h:341
Type mType
Definition PlayerModelBase.h:679
bool isRideLiftWait() const
Definition PlayerModelBase.h:662
bool isAnmFlagBit(AnmFlagType type, AnmFlagBit bit) const
Definition PlayerModelBase.h:459
FaceAngleOverrideFlag
Definition PlayerModelBase.h:162
@ cFaceAngleOverrideFlag_Y
Definition PlayerModelBase.h:164
@ cFaceAngleOverrideFlag_X
Definition PlayerModelBase.h:163
@ cFaceAngleOverrideFlag_Z
Definition PlayerModelBase.h:165
s32 mAnm
Definition PlayerModelBase.h:671
bool isAnmFlagBit(AnmFlagBit bit) const
Definition PlayerModelBase.h:469
u32 getAnmFlag() const
Definition PlayerModelBase.h:444
RndType
Definition PlayerModelBase.h:176
@ cRndType_Uniform
Definition PlayerModelBase.h:177
@ cRndType_RightSkew
Definition PlayerModelBase.h:178
bool checkFrame(f32 frame)
ModelResource * getAnmResFile() const
Definition PlayerModelBase.h:409
virtual bool setPersonalAnm(ModelResource **anm_res, sead::BufferedSafeString *anm_name, s32 anm_id, bool body)=0
ModelResource * mAnmRes
Definition PlayerModelBase.h:669
void getJointMtx(sead::Matrixf *mtx, s32 index)
sead::Matrixf mMtxSr
Definition PlayerModelBase.h:676
bool isCarryBodyAnm() const
Definition PlayerModelBase.h:549
bool isBodyAnmFlag(u32 flag) const
Definition PlayerModelBase.h:539
static const sead::SafeString c2JumpedAnmVarDt[]
Definition PlayerModelBase.h:705
sead::Matrixf mMtxSrt
Definition PlayerModelBase.h:675
sead::BitFlag32 mFaceAngleOverrideFlag
Definition PlayerModelBase.h:695
sead::BitFlag32 mFlag
Definition PlayerModelBase.h:691
sead::Vector3f mHeadPos
Definition PlayerModelBase.h:678
bool isCourseSelectScene()
bool isPenguinPersonalAnm() const
Definition PlayerModelBase.h:529
virtual void offStarAnm()
Definition PlayerModelBase.h:378
bool isWaitL() const
Definition PlayerModelBase.h:627
void copyLinkAnm(f32 blend_duration)
s32 getAnmID() const
Definition PlayerModelBase.h:399
void onBalloonChibiYoshiFly()
void offBubbleChibiYoshiShake()
Definition PlayerModelBase.h:353
void getJointPos(sead::Vector3f *pos, s32 index)
u32 getBodyAnmFlag() const
Definition PlayerModelBase.h:449
bool isOnHDokan() const
Definition PlayerModelBase.h:606
virtual ~PlayerModelBase()
Angle3 mFaceAngleOverride
Definition PlayerModelBase.h:694
s32 mDefaultExpressionTimer
Definition PlayerModelBase.h:682
bool isBodyAnmFlagBit(AnmFlagBit bit) const
Definition PlayerModelBase.h:544
s32 mJumpIndexPrev
Definition PlayerModelBase.h:693
f32 mOffsetY
Definition PlayerModelBase.h:683
bool isSitAnm() const
Definition PlayerModelBase.h:474
void setSlopeBodyAnm(f32 blend_duration)
bool isJumpAnm() const
Definition PlayerModelBase.h:499
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:701
f32 getFrameDirect()
Definition PlayerModelBase.h:279
bool isAnmFlag(u32 flag) const
Definition PlayerModelBase.h:464
void offOnHDokan()
Definition PlayerModelBase.h:601
u32 getAnmFlag(AnmFlagType type) const
Definition PlayerModelBase.h:439
const sead::Matrixf & getMtxSr() const
Definition PlayerModelBase.h:414
void setFaceAngleOverride(const Angle3 &angle)
Definition PlayerModelBase.h:579
bool isSwimAnm() const
Definition PlayerModelBase.h:494
TexAnmType
Definition PlayerModelBase.h:53
@ cTexAnmType_Wait
Definition PlayerModelBase.h:55
@ cTexAnmType_DmEscortWait
Definition PlayerModelBase.h:87
@ cTexAnmType_CoinComp
Definition PlayerModelBase.h:68
@ cTexAnmType_PropellerGoalPutOnCap
Definition PlayerModelBase.h:57
@ cTexAnmType_KinopioDmShoot
Definition PlayerModelBase.h:85
@ cTexAnmType_BalloonWaitDisconnect
Definition PlayerModelBase.h:76
@ cTexAnmType_DmEnding1Wait
Definition PlayerModelBase.h:89
@ cTexAnmType_DmGlad
Definition PlayerModelBase.h:69
@ cTexAnmType_DmEscort
Definition PlayerModelBase.h:86
@ cTexAnmType_MusaGoalPutOnCap
Definition PlayerModelBase.h:59
@ cTexAnmType_DmGlad2
Definition PlayerModelBase.h:70
@ cTexAnmType_DmSad
Definition PlayerModelBase.h:75
@ cTexAnmType_DmCourseIn
Definition PlayerModelBase.h:79
@ cTexAnmType_KinopioMGGlad
Definition PlayerModelBase.h:77
@ cTexAnmType_CourseIn
Definition PlayerModelBase.h:67
@ cTexAnmType_Num
Definition PlayerModelBase.h:91
@ cTexAnmType_MusaRideGoalPutOnCap
Definition PlayerModelBase.h:61
@ cTexAnmType_PenguinRideGoalPutOnCap
Definition PlayerModelBase.h:60
@ cTexAnmType_GoalPutOnCap
Definition PlayerModelBase.h:56
@ cTexAnmType_Jump
Definition PlayerModelBase.h:64
@ cTexAnmType_DmEnding1
Definition PlayerModelBase.h:88
@ cTexAnmType_Dam
Definition PlayerModelBase.h:63
@ cTexAnmType_DmSad2
Definition PlayerModelBase.h:80
@ cTexAnmType_KinopioDmHail
Definition PlayerModelBase.h:82
@ cTexAnmType_DmGlad3Wait
Definition PlayerModelBase.h:73
@ cTexAnmType_Throw
Definition PlayerModelBase.h:66
@ cTexAnmType_GoalPutOnCap_2
Definition PlayerModelBase.h:62
@ cTexAnmType_PenguinGoalPutOnCap
Definition PlayerModelBase.h:58
@ cTexAnmType_Jumped
Definition PlayerModelBase.h:65
@ cTexAnmType_WaitStatic
Definition PlayerModelBase.h:54
@ cTexAnmType_DmGlad4Wait
Definition PlayerModelBase.h:74
@ cTexAnmType_DmGlad2Wait
Definition PlayerModelBase.h:71
@ cTexAnmType_DmGlad3
Definition PlayerModelBase.h:72
@ cTexAnmType_KinopioDmAwawa
Definition PlayerModelBase.h:84
@ cTexAnmType_KinopioDmThanksGift
Definition PlayerModelBase.h:81
@ cTexAnmType_KinopioDmDamage
Definition PlayerModelBase.h:83
@ cTexAnmType_DmEnding2
Definition PlayerModelBase.h:90
@ cTexAnmType_KinopioMGSad
Definition PlayerModelBase.h:78
void offRideLiftWait()
Definition PlayerModelBase.h:657
PlayerModelBase * mLinkPlayer
Definition PlayerModelBase.h:674
f32 getRateImpl(s32 skl_anm_idx)
AnmFlagBit
Definition PlayerModelBase.h:125
@ cAnmFlagBit_Personal_Propeller
Definition PlayerModelBase.h:148
@ cAnmFlagBit_7
Definition PlayerModelBase.h:133
@ cAnmFlagBit_Sit
Definition PlayerModelBase.h:126
@ cAnmFlagBit_HangCliff
Definition PlayerModelBase.h:129
@ cAnmFlagBit_Personal_Musa
Definition PlayerModelBase.h:146
@ cAnmFlagBit_8
Definition PlayerModelBase.h:134
@ cAnmFlagBit_5
Definition PlayerModelBase.h:131
@ cAnmFlagBit_Personal_Kinopio
Definition PlayerModelBase.h:145
@ cAnmFlagBit_Dir_L
Definition PlayerModelBase.h:140
@ cAnmFlagBit_Carry
Definition PlayerModelBase.h:127
@ cAnmFlagBit_Hang
Definition PlayerModelBase.h:128
@ cAnmFlagBit_16
Definition PlayerModelBase.h:142
@ cAnmFlagBit_9
Definition PlayerModelBase.h:135
@ cAnmFlagBit_Personal_Luigi
Definition PlayerModelBase.h:144
@ cAnmFlagBit_Swim
Definition PlayerModelBase.h:130
@ cAnmFlagBit_Dir_R
Definition PlayerModelBase.h:141
@ cAnmFlagBit_Jump
Definition PlayerModelBase.h:136
@ cAnmFlagBit_Slope
Definition PlayerModelBase.h:138
@ cAnmFlagBit_Personal_Penguin
Definition PlayerModelBase.h:147
@ cAnmFlagBit_6
Definition PlayerModelBase.h:132
virtual void setCarryBodyAnm(f32 blend_duration, bool bubble_reset_frame)=0
void onRideLiftWait()
Definition PlayerModelBase.h:652
bool isSlopeBodyAnm() const
Definition PlayerModelBase.h:559
bool isCarryAnm() const
Definition PlayerModelBase.h:479
f32 mStoopOffsetCurrent
Definition PlayerModelBase.h:684
s32 mBodyAnm
Definition PlayerModelBase.h:672
SceneType getSceneType() const
Definition PlayerModelBase.h:429
static const s32 cJumpMax
Definition PlayerModelBase.h:698
SceneType
Definition PlayerModelBase.h:42
@ cSceneType_2D
Definition PlayerModelBase.h:46
@ cSceneType_CourseSelect
Definition PlayerModelBase.h:44
@ cSceneType_Course
Definition PlayerModelBase.h:43
@ cSceneType_Unknown
Definition PlayerModelBase.h:45
@ cSceneType_Num
Definition PlayerModelBase.h:47
bool mCarryStateChanged
Definition PlayerModelBase.h:696
sead::Vector3f * getHeadTopPosP()
Definition PlayerModelBase.h:419
HeadType
Definition PlayerModelBase.h:169
@ cHeadType_BonusCap
Definition PlayerModelBase.h:171
@ cHeadType_Normal
Definition PlayerModelBase.h:170
void onOnHDokan()
Definition PlayerModelBase.h:596
bool isHangCliffAnm() const
Definition PlayerModelBase.h:489
virtual void setDark(DarkTargetType type, f32 value)=0
bool isBubbleChibiYoshiShake() const
Definition PlayerModelBase.h:368
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:621
bool isRideCloudWait() const
Definition PlayerModelBase.h:647
bool isBodyAnmLoopFrame()
bool isMusaPersonalAnm() const
Definition PlayerModelBase.h:524
bool isAnmStopImpl(s32 skl_anm_idx)
bool isJumpBodyAnm() const
Definition PlayerModelBase.h:554
bool isStarAnm() const
Definition PlayerModelBase.h:383
virtual void setModelG3dRenderFlag(u32 flag)=0
s32 mRideAnm
Definition PlayerModelBase.h:673
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:509
ModelResource * getModelResFile() const
Definition PlayerModelBase.h:404
void getJointPos(sead::Vector3f *pos, const sead::SafeString &name)
void onRideCloudWait()
Definition PlayerModelBase.h:637
bool isLuigiPersonalAnm() const
Definition PlayerModelBase.h:519
sead::Vector3f * getHeadPosP()
Definition PlayerModelBase.h:424
virtual f32 getBaseScale()=0
virtual void onStarAnm()
Definition PlayerModelBase.h:373
static const sead::SafeString c2JumpAnmVarDt[]
Definition PlayerModelBase.h:703
AnimModel * mModel
Definition PlayerModelBase.h:670
void onWaitR()
Definition PlayerModelBase.h:616
void setFrameDirect(f32 frame)
bool checkFrameImpl(s32 skl_anm_idx, f32 frame)
void offRideCloudWait()
Definition PlayerModelBase.h:642
bool isDirAnmR() const
Definition PlayerModelBase.h:514
Flag
Definition PlayerModelBase.h:104
@ cFlag_IsStarAnm
Definition PlayerModelBase.h:114
@ cFlag_Bit9
Definition PlayerModelBase.h:113
@ cFlag_None
Definition PlayerModelBase.h:121
@ cFlag_Bit4
Definition PlayerModelBase.h:109
@ cFlag_IsRideCloudWait
Definition PlayerModelBase.h:118
@ cFlag_Bit5
Definition PlayerModelBase.h:110
@ cFlag_IsWaitL
Definition PlayerModelBase.h:116
@ cFlag_Bit6
Definition PlayerModelBase.h:111
@ cFlag_IsBubbleChibiYoshiShake
Definition PlayerModelBase.h:108
@ cFlag_IsWaitR
Definition PlayerModelBase.h:117
@ cFlag_IsBalloonChibiYoshiFly
Definition PlayerModelBase.h:107
@ cFlag_IsRideLiftWait
Definition PlayerModelBase.h:119
@ cFlag_IsCarry
Definition PlayerModelBase.h:105
@ cFlag_IsOnHDokan
Definition PlayerModelBase.h:115
@ cFlag_IsLiftUp
Definition PlayerModelBase.h:106
sead::SafeArray< u32, cAnmFlagType_Num > mAnmFlag
Definition PlayerModelBase.h:690
const Angle3 & getFaceAngleOverride() const
Definition PlayerModelBase.h:574
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:564
bool isValidSceneType() const
Definition PlayerModelBase.h:434
void resetFaceAngleOverrideFlag()
Definition PlayerModelBase.h:591
s32 mJumpIndex
Definition PlayerModelBase.h:692