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>
35 static_assert(
sizeof(
Type) == 4);
151 static_assert(
sizeof(
CapMode) == 4);
155 PlayerModelBase(
const sead::SafeString& model_res_key,
const sead::SafeString& anm_res_key);
164 virtual void setFootAnmImpl(
const ModelResource* anm_res,
const sead::SafeString& anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) = 0;
165 virtual void setBodyAnmImpl(
const ModelResource* anm_res,
const sead::SafeString& anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) = 0;
186 virtual void setAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
188 void setBodyAnm(s32 anm_id, f32 rate, f32 frame = 0.0f, f32 blend_duration = 0.0f);
193 void setLinkAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
195 void setRideAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
204 virtual bool getJumpAnmName(sead::BufferedSafeString* anm_name, s32 anm_id,
bool body);
262 virtual void getJointMtx(sead::Matrixf* mtx,
const sead::SafeString& name);
264 void getJointPos(sead::Vector3f* pos,
const sead::SafeString& name);
269 void calc(
const sead::Matrixf& mtx);
288 mFlag.set(cFlag_IsBubbleChibiYoshiShake);
300 mFlag.reset(cFlag_IsBubbleChibiYoshiShake);
310 return mFlag.isOn(cFlag_IsBalloonChibiYoshiFly);
315 return mFlag.isOn(cFlag_IsBubbleChibiYoshiShake);
320 mFlag.set(cFlag_IsStarAnm);
325 mFlag.reset(cFlag_IsStarAnm);
363 return mAnmFlag[type];
368 return mAnmFlag[type] >> bit & 1;
388 mFaceAngleOverrideFlag.change(flag, enable);
393 return mFaceAngleOverride;
398 mFaceAngleOverride = angle;
403 mFaceAngleOverride.x() = 0;
404 mFaceAngleOverride.y() = 0;
405 mFaceAngleOverride.z() = 0;
410 mFaceAngleOverrideFlag.makeAllZero();
415 mFlag.set(cFlag_IsOnHDokan);
420 mFlag.reset(cFlag_IsOnHDokan);
425 return mFlag.isOn(cFlag_IsOnHDokan);
430 mFlag.set(cFlag_IsWaitL);
435 mFlag.set(cFlag_IsWaitR);
440 mFlag.reset(cFlag_IsWaitL);
441 mFlag.reset(cFlag_IsWaitR);
446 return mFlag.isOn(cFlag_IsWaitL);
451 return mFlag.isOn(cFlag_IsWaitR);
456 mFlag.set(cFlag_IsRideCloudWait);
461 mFlag.reset(cFlag_IsRideCloudWait);
466 return mFlag.isOn(cFlag_IsRideCloudWait);
471 mFlag.set(cFlag_IsRideLiftWait);
476 mFlag.reset(cFlag_IsRideLiftWait);
481 return mFlag.isOn(cFlag_IsRideLiftWait);
Definition AnimModel.h:19
Definition ModelResource.h:13
Definition PlayerModelBase.h:16
void resetFaceAngleOverride()
Definition PlayerModelBase.h:401
virtual void setTexAnmType(TexAnmType type)=0
bool isBalloonChibiYoshiFly() const
Definition PlayerModelBase.h:308
void setJumpIndex(s32 rnd_type)
TexAnmType mTexAnmType
Definition PlayerModelBase.h:498
SceneType mSceneType
Definition PlayerModelBase.h:497
void changeFaceAngleOverrideFlag(FaceAngleOverrideFlag flag, bool enable)
Definition PlayerModelBase.h:386
virtual void calcImpl()=0
PlayerModelBase(const sead::SafeString &model_res_key, const sead::SafeString &anm_res_key)
void calc(const sead::Matrixf &mtx)
bool checkBodyFrame(f32 frame)
void onWaitL()
Definition PlayerModelBase.h:428
bool isHangAnm() const
Definition PlayerModelBase.h:376
virtual void calc2Impl()=0
virtual void setAnm(s32 anm_id, f32 rate, f32 blend_duration=0.0f, f32 frame=0.0f)
void setBodyAnm(s32 anm_id, f32 rate, f32 frame=0.0f, f32 blend_duration=0.0f)
AnmFlagType
Definition PlayerModelBase.h:131
@ cAnmFlagType_Num
Definition PlayerModelBase.h:135
@ cAnmFlagType_Main
Definition PlayerModelBase.h:132
@ cAnmFlagType_Unknown
Definition PlayerModelBase.h:134
@ cAnmFlagType_Body
Definition PlayerModelBase.h:133
sead::Vector3f mHeadTopPos
Definition PlayerModelBase.h:494
void setRideAnm(s32 anm_id, f32 rate, f32 blend_duration=0.0f, f32 frame=0.0f)
DarkTargetType
Definition PlayerModelBase.h:91
@ cDarkTargetType_TevKColor3
Definition PlayerModelBase.h:93
@ cDarkTargetType_InvTevColor0
Definition PlayerModelBase.h:92
virtual void getJointMtx(sead::Matrixf *mtx, const sead::SafeString &name)
ModelResource * mModelRes
Definition PlayerModelBase.h:485
f32 mStoopOffsetTarget
Definition PlayerModelBase.h:502
f32 mStoopOffsetBlendFramesRemaining
Definition PlayerModelBase.h:503
void offBalloonChibiYoshiFly()
bool isWaitR() const
Definition PlayerModelBase.h:449
virtual f32 getAnmBlendDuration(s32 anm_id)
virtual f32 getAnmRate(s32 anm_id)
void onBubbleChibiYoshiShake()
Definition PlayerModelBase.h:286
Type mType
Definition PlayerModelBase.h:496
bool checkBodyFrameCtrlFlagUnk2()
bool isRideLiftWait() const
Definition PlayerModelBase.h:479
FaceAngleOverrideFlag
Definition PlayerModelBase.h:140
@ cFaceAngleOverrideFlag_Y
Definition PlayerModelBase.h:142
@ cFaceAngleOverrideFlag_X
Definition PlayerModelBase.h:141
@ cFaceAngleOverrideFlag_Z
Definition PlayerModelBase.h:143
s32 mAnm
Definition PlayerModelBase.h:488
bool checkFrame(f32 frame)
ModelResource * getAnmResFile() const
Definition PlayerModelBase.h:346
virtual bool setPersonalAnm(ModelResource **anm_res, sead::BufferedSafeString *anm_name, s32 anm_id, bool body)=0
ModelResource * mAnmRes
Definition PlayerModelBase.h:486
void getJointMtx(sead::Matrixf *mtx, s32 index)
sead::Matrixf mMtxSr
Definition PlayerModelBase.h:493
sead::Matrixf mMtxSrt
Definition PlayerModelBase.h:492
sead::BitFlag32 mFaceAngleOverrideFlag
Definition PlayerModelBase.h:512
sead::BitFlag32 mFlag
Definition PlayerModelBase.h:508
sead::Vector3f mHeadPos
Definition PlayerModelBase.h:495
bool isCourseSelectScene()
virtual void offStarAnm()
Definition PlayerModelBase.h:323
bool isWaitL() const
Definition PlayerModelBase.h:444
void copyLinkAnm(f32 blend_duration)
s32 getAnmID() const
Definition PlayerModelBase.h:336
void onBalloonChibiYoshiFly()
virtual void setModelDrawBufferIndex(s32 idx_opa, s32 idx_xlu)=0
void offBubbleChibiYoshiShake()
Definition PlayerModelBase.h:298
void getJointPos(sead::Vector3f *pos, s32 index)
bool isOnHDokan() const
Definition PlayerModelBase.h:423
virtual ~PlayerModelBase()
Angle3 mFaceAngleOverride
Definition PlayerModelBase.h:511
s32 mDefaultExpressionTimer
Definition PlayerModelBase.h:499
s32 mJumpIndexPrev
Definition PlayerModelBase.h:510
f32 mOffsetY
Definition PlayerModelBase.h:500
bool isSitAnm() const
Definition PlayerModelBase.h:371
void setSlopeBodyAnm(f32 blend_duration)
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
f32 getFrameDirect()
Definition PlayerModelBase.h:233
void offOnHDokan()
Definition PlayerModelBase.h:418
u32 getAnmFlag(AnmFlagType type) const
Definition PlayerModelBase.h:361
void setFaceAngleOverride(const Angle3 &angle)
Definition PlayerModelBase.h:396
bool isSwimAnm() const
Definition PlayerModelBase.h:381
TexAnmType
Definition PlayerModelBase.h:47
@ cTexAnmType_Wait
Definition PlayerModelBase.h:49
@ cTexAnmType_DmEscortWait
Definition PlayerModelBase.h:81
@ cTexAnmType_CoinComp
Definition PlayerModelBase.h:62
@ cTexAnmType_PropellerGoalPutOnCap
Definition PlayerModelBase.h:51
@ cTexAnmType_KinopioDmShoot
Definition PlayerModelBase.h:79
@ cTexAnmType_BalloonWaitDisconnect
Definition PlayerModelBase.h:70
@ cTexAnmType_DmEnding1Wait
Definition PlayerModelBase.h:83
@ cTexAnmType_DmGlad
Definition PlayerModelBase.h:63
@ cTexAnmType_DmEscort
Definition PlayerModelBase.h:80
@ cTexAnmType_MusaGoalPutOnCap
Definition PlayerModelBase.h:53
@ cTexAnmType_DmGlad2
Definition PlayerModelBase.h:64
@ cTexAnmType_DmSad
Definition PlayerModelBase.h:69
@ cTexAnmType_DmCourseIn
Definition PlayerModelBase.h:73
@ cTexAnmType_KinopioMGGlad
Definition PlayerModelBase.h:71
@ cTexAnmType_CourseIn
Definition PlayerModelBase.h:61
@ cTexAnmType_Num
Definition PlayerModelBase.h:85
@ cTexAnmType_MusaRideGoalPutOnCap
Definition PlayerModelBase.h:55
@ cTexAnmType_PenguinRideGoalPutOnCap
Definition PlayerModelBase.h:54
@ cTexAnmType_GoalPutOnCap
Definition PlayerModelBase.h:50
@ cTexAnmType_Jump
Definition PlayerModelBase.h:58
@ cTexAnmType_DmEnding1
Definition PlayerModelBase.h:82
@ cTexAnmType_Dam
Definition PlayerModelBase.h:57
@ cTexAnmType_DmSad2
Definition PlayerModelBase.h:74
@ cTexAnmType_KinopioDmHail
Definition PlayerModelBase.h:76
@ cTexAnmType_DmGlad3Wait
Definition PlayerModelBase.h:67
@ cTexAnmType_Throw
Definition PlayerModelBase.h:60
@ cTexAnmType_GoalPutOnCap_2
Definition PlayerModelBase.h:56
@ cTexAnmType_PenguinGoalPutOnCap
Definition PlayerModelBase.h:52
@ cTexAnmType_Jumped
Definition PlayerModelBase.h:59
@ cTexAnmType_WaitStatic
Definition PlayerModelBase.h:48
@ cTexAnmType_DmGlad4Wait
Definition PlayerModelBase.h:68
@ cTexAnmType_DmGlad2Wait
Definition PlayerModelBase.h:65
@ cTexAnmType_DmGlad3
Definition PlayerModelBase.h:66
@ cTexAnmType_KinopioDmAwawa
Definition PlayerModelBase.h:78
@ cTexAnmType_KinopioDmThanksGift
Definition PlayerModelBase.h:75
@ cTexAnmType_KinopioDmDamage
Definition PlayerModelBase.h:77
@ cTexAnmType_DmEnding2
Definition PlayerModelBase.h:84
@ cTexAnmType_KinopioMGSad
Definition PlayerModelBase.h:72
void offRideLiftWait()
Definition PlayerModelBase.h:474
CapMode
Definition PlayerModelBase.h:147
@ cCapMode_Normal
Definition PlayerModelBase.h:148
@ cCapMode_Bonus
Definition PlayerModelBase.h:149
PlayerModelBase * mLinkPlayer
Definition PlayerModelBase.h:491
AnmFlagBit
Definition PlayerModelBase.h:115
@ cAnmFlagBit_7
Definition PlayerModelBase.h:122
@ cAnmFlagBit_Sit
Definition PlayerModelBase.h:116
@ cAnmFlagBit_8
Definition PlayerModelBase.h:123
@ cAnmFlagBit_Hang
Definition PlayerModelBase.h:118
@ cAnmFlagBit_9
Definition PlayerModelBase.h:124
@ cAnmFlagBit_Swim
Definition PlayerModelBase.h:120
@ cAnmFlagBit_IsSlopeBodyAnm
Definition PlayerModelBase.h:126
virtual void setCarryBodyAnm(f32 blend_duration, bool bubble_reset_frame)=0
void onRideLiftWait()
Definition PlayerModelBase.h:469
bool isAnmFlag(AnmFlagType type, AnmFlagBit bit) const
Definition PlayerModelBase.h:366
f32 mStoopOffsetCurrent
Definition PlayerModelBase.h:501
s32 mBodyAnm
Definition PlayerModelBase.h:489
SceneType
Definition PlayerModelBase.h:38
@ cSceneType_2D
Definition PlayerModelBase.h:42
@ cSceneType_CourseSelect
Definition PlayerModelBase.h:40
@ cSceneType_Course
Definition PlayerModelBase.h:39
@ cSceneType_Unknown
Definition PlayerModelBase.h:41
bool mCarryStateChanged
Definition PlayerModelBase.h:513
sead::Vector3f * getHeadTopPosP()
Definition PlayerModelBase.h:351
void onOnHDokan()
Definition PlayerModelBase.h:413
virtual void setDark(DarkTargetType type, f32 value)=0
bool isBubbleChibiYoshiShake() const
Definition PlayerModelBase.h:313
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:438
bool isRideCloudWait() const
Definition PlayerModelBase.h:464
bool checkFrameCtrlFlagUnk2()
s32 mRideAnm
Definition PlayerModelBase.h:490
virtual void setFootAnmImpl(const ModelResource *anm_res, const sead::SafeString &anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration)=0
virtual void setBodyFrame(f32 frame)
ModelResource * getModelResFile() const
Definition PlayerModelBase.h:341
void getJointPos(sead::Vector3f *pos, const sead::SafeString &name)
void onRideCloudWait()
Definition PlayerModelBase.h:454
sead::Vector3f * getHeadPosP()
Definition PlayerModelBase.h:356
virtual void setModelDrawFlagDirect(u32 flag)=0
virtual f32 getBaseScale()=0
virtual void onStarAnm()
Definition PlayerModelBase.h:318
AnimModel * mModel
Definition PlayerModelBase.h:487
void onWaitR()
Definition PlayerModelBase.h:433
void setFrameDirect(f32 frame)
void offRideCloudWait()
Definition PlayerModelBase.h:459
Flag
Definition PlayerModelBase.h:98
@ cFlag_IsStarAnm
Definition PlayerModelBase.h:104
@ cFlag_None
Definition PlayerModelBase.h:111
@ cFlag_IsRideCloudWait
Definition PlayerModelBase.h:108
@ cFlag_IsWaitL
Definition PlayerModelBase.h:106
@ cFlag_IsBubbleChibiYoshiShake
Definition PlayerModelBase.h:102
@ cFlag_IsWaitR
Definition PlayerModelBase.h:107
@ cFlag_IsBalloonChibiYoshiFly
Definition PlayerModelBase.h:101
@ cFlag_IsRideLiftWait
Definition PlayerModelBase.h:109
@ cFlag_IsCarry
Definition PlayerModelBase.h:99
@ cFlag_IsOnHDokan
Definition PlayerModelBase.h:105
@ cFlag_IsLiftUp
Definition PlayerModelBase.h:100
sead::SafeArray< u32, cAnmFlagType_Num > mAnmFlag
Definition PlayerModelBase.h:507
const Angle3 & getFaceAngleOverride() const
Definition PlayerModelBase.h:391
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
void resetFaceAngleOverrideFlag()
Definition PlayerModelBase.h:408
s32 mJumpIndex
Definition PlayerModelBase.h:509