New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
PlayerModelBase.h
Go to the documentation of this file.
1#pragma once
2
3#include <graphics/FrameCtrl.h>
4#include <utility/Angle3.h>
5
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>
11
12class AnimModel;
13class ModelResource;
14
15class PlayerModelBase : public sead::IDisposer // vtbl Address: 0x1016BCE4
16{
17 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101E9D24
18 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101EBA78
20
21public:
37 static_assert(cType_Num == 8);
38 static_assert(sizeof(Type) == 4);
39
48 static_assert(sizeof(SceneType) == 4);
49 static_assert(cSceneType_Num == 4);
50
92 static_assert(cTexAnmType_Num == 37);
93 static_assert(sizeof(cTexAnmType_Num) == 4);
94
96 {
97 cDarkTargetType_InvTevColor0 = 0, // Set for normal & tower door
98 cDarkTargetType_TevKColor3 // Set for castle door
99 };
100 static_assert(sizeof(DarkTargetType) == 4);
101
102 enum Flag
103 {
108 cFlag_Bit4 = 1 << 4,
109 cFlag_Bit5 = 1 << 5,
110 cFlag_Bit6 = 1 << 6,
111 // ...
112 cFlag_Bit9 = 1 << 9,
115 cFlag_IsWaitL = 1 << 12,
116 cFlag_IsWaitR = 1 << 13,
119
121 };
122
149 static_assert(sizeof(AnmFlagBit) == 4);
150
158 static_assert(cAnmFlagType_Num == 3);
159
166
172 static_assert(sizeof(HeadType) == 4);
173
179
180 enum
181 {
185 };
186 static_assert(cSklAnm_BaseNum == 2);
187
188public:
189 // Address: 0x02920CA8
190 PlayerModelBase(const sead::SafeString& model_res_key, const sead::SafeString& anm_res_key);
191 // Address: 0x02920E8C
192 virtual ~PlayerModelBase();
193
194 virtual void setTexAnmType(TexAnmType type) = 0;
195
196 virtual bool setPersonalAnm(ModelResource** anm_res, sead::BufferedSafeString* anm_name, s32 anm_id, bool body) = 0;
197 virtual bool setPersonalRideAnm(ModelResource** anm_res, sead::BufferedSafeString* anm_name, s32 anm_id) = 0;
198
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;
201
202 virtual void setAnmBind() = 0;
203
204 virtual void calcImpl() = 0;
205 virtual void calc2Impl() = 0;
206
207 virtual void setModelRenderPass(s32 idx_opa, s32 idx_xlu) = 0;
208 virtual void setModelG3dRenderFlag(u32 flag) = 0; // ModelG3d::RenderFlag
209
210 virtual void setDark(DarkTargetType type, f32 value) = 0;
211
212 // Address: 0x02920EE0
214
215 // Address: 0x02920F88
216 void reset();
217
218 // Address: 0x02920F9C
219 virtual f32 getAnmRate(s32 anm_id);
220 // Address: 0x02920FB0
221 virtual f32 getAnmBlendDuration(s32 anm_id);
222
223 // Address: 0x02921524
224 virtual void setAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
225 // Address: 0x02921280
226 void setBodyAnm(s32 anm_id, f32 rate, f32 frame = 0.0f, f32 blend_duration = 0.0f);
227 // Address: 0x029219F8
228 void copyLinkAnm(f32 blend_duration);
229
230 // Address: 0x02921444
231 void setLinkAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
232 // Address: 0x02921A40
233 void setRideAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
234 // Address: 0x029214F0
235 void setSlopeBodyAnm(f32 blend_duration);
236 virtual void releaseBodyAnm(f32 blend_duration) = 0;
237 virtual void setCarryBodyAnm(f32 blend_duration, bool bubble_reset_frame) = 0;
238
239 // Address: 0x02921DB4
240 void setJumpAnmRand(RndType rnd_type);
241 // Address: 0x02921E50
242 virtual bool getJumpAnmName(sead::BufferedSafeString* anm_name, s32 anm_id, bool body);
243
244 // Address: 0x02921088
245 void setRate(f32 rate);
246 // Address: 0x029219F0
248
249 // Address: 0x02921058
250 void setRateDirect(f32 rate);
251 // Address: 0x029220E0
253
254 // Address: 0x029220E8
255 virtual void setBodyRate(f32 rate);
256 // Address: 0x029214E0
258
259 // Address: 0x02920FC4
260 void setRateImpl(s32 skl_anm_idx, f32 rate);
261 // Address: 0x029214B8
262 f32 getRateImpl(s32 skl_anm_idx);
263
264 // Address: 0x0292211C
265 bool isAnmStop();
266 // Address: 0x02922124
268 // Address: 0x029220F0
269 bool isAnmStopImpl(s32 skl_anm_idx);
270
271 // Address: 0x02921178
272 void setFrame(f32 frame);
273 // Address: 0x02921210
275
276 // Address: 0x02921170
277 void setFrameDirect(f32 frame);
278 f32 getFrameDirect() { return getFrame(); }
279
280 // Address: 0x0292212C
281 virtual void setBodyFrame(f32 frame);
282 // Address: 0x029214E8
284
285 // Address: 0x029210F8
286 void setFrameImpl(s32 skl_anm_idx, f32 frame);
287 // Address: 0x029211E8
288 f32 getFrameImpl(s32 skl_anm_idx);
289
290 // Address: 0x02922158
291 bool checkFrame(f32 frame);
292 // Address: 0x02922160
293 bool checkBodyFrame(f32 frame);
294 // Address: 0x02922134
295 bool checkFrameImpl(s32 skl_anm_idx, f32 frame);
296
297 // Address: 0x02922194
299 // Address: Deleted
301 // Address: 0x02922168
302 bool isAnmLoopFrameImpl(s32 skl_anm_idx);
303
304 // Address: 0x0292219C
306
307 // Address: 0x02921060
309
310 // Address: 0x029221B0
311 void getJointMtx(sead::Matrixf* mtx, s32 index);
312 // Address: 0x029221D4
313 void getJointPos(sead::Vector3f* pos, s32 index);
314
315 // Address: 0x02922210
316 virtual void getJointMtx(sead::Matrixf* mtx, const sead::SafeString& name);
317 // Address: 0x029222BC
318 void getJointPos(sead::Vector3f* pos, const sead::SafeString& name);
319
320 virtual void play() = 0;
321
322 // Address: 0x02922304
323 void calc(const sead::Matrixf& mtx);
324 // Address: 0x029224E8
325 void calc2();
326
327 // Address: 0x029224F8
328 virtual void draw();
329
330 // Address: 0x02922578
332
333 // Address: 0x029225AC
334 void onCarry();
335 // Address: 0x029225D0
336 void onLiftUp();
337 // Address: 0x029225F4
339
341 {
342 mFlag.set(cFlag_IsBubbleChibiYoshiShake);
343 }
344
345 // Address: 0x0292250C
346 void offCarry();
347 // Address: 0x02922530
348 void offLiftUp();
349 // Address: 0x02922554
351
353 {
354 mFlag.reset(cFlag_IsBubbleChibiYoshiShake);
355 }
356
357 // Address: 0x0292123C
358 bool isCarry();
359 // Address: 0x02921218
360 bool isLiftUp();
361
363 {
364 return mFlag.isOn(cFlag_IsBalloonChibiYoshiFly);
365 }
366
368 {
369 return mFlag.isOn(cFlag_IsBubbleChibiYoshiShake);
370 }
371
372 virtual void onStarAnm()
373 {
374 mFlag.set(cFlag_IsStarAnm);
375 }
376
377 virtual void offStarAnm()
378 {
379 mFlag.reset(cFlag_IsStarAnm);
380 }
381
382 bool isStarAnm() const
383 {
384 return mFlag.isOn(cFlag_IsStarAnm);
385 }
386
387 // Address: 0x02922618
389
390 // Address: 0x029227D0
392
393 // Address: 0x02921D48
394 u32 rndInt(u32 max);
395
396 virtual f32 getBaseScale() = 0;
397
398 s32 getAnmID() const
399 {
400 return mAnm;
401 }
402
404 {
405 return mModelRes;
406 }
407
409 {
410 return mAnmRes;
411 }
412
413 const sead::Matrixf& getMtxSr() const
414 {
415 return mMtxSr;
416 }
417
419 {
420 return &mHeadTopPos;
421 }
422
424 {
425 return &mHeadPos;
426 }
427
429 {
430 return mSceneType;
431 }
432
433 bool isValidSceneType() const
434 {
435 return 0 <= mSceneType && mSceneType < cSceneType_Num;
436 }
437
439 {
440 return mAnmFlag[type];
441 }
442
444 {
445 return mAnmFlag[cAnmFlagType_Main];
446 }
447
449 {
450 return mAnmFlag[cAnmFlagType_Body];
451 }
452
453 bool isAnmFlag(AnmFlagType type, u32 flag) const
454 {
455 return mAnmFlag[type] & flag;
456 }
457
458 bool isAnmFlagBit(AnmFlagType type, AnmFlagBit bit) const
459 {
460 return isAnmFlag(type, 1 << bit);
461 }
462
463 bool isAnmFlag(u32 flag) const
464 {
465 return isAnmFlag(cAnmFlagType_Main, flag);
466 }
467
468 bool isAnmFlagBit(AnmFlagBit bit) const
469 {
471 }
472
473 bool isSitAnm() const
474 {
476 }
477
478 bool isCarryAnm() const
479 {
481 }
482
483 bool isHangAnm() const
484 {
486 }
487
488 bool isHangCliffAnm() const
489 {
491 }
492
493 bool isSwimAnm() const
494 {
496 }
497
498 bool isJumpAnm() const
499 {
501 }
502
503 bool isDirAnm() const
504 {
505 return isAnmFlag(1 << cAnmFlagBit_Dir_L | 1 << cAnmFlagBit_Dir_R);
506 }
507
508 bool isDirAnmL() const
509 {
511 }
512
513 bool isDirAnmR() const
514 {
516 }
517
522
523 bool isMusaPersonalAnm() const
524 {
526 }
527
532
537
538 bool isBodyAnmFlag(u32 flag) const
539 {
540 return isAnmFlag(cAnmFlagType_Body, flag);
541 }
542
544 {
546 }
547
548 bool isCarryBodyAnm() const
549 {
551 }
552
553 bool isJumpBodyAnm() const
554 {
556 }
557
558 bool isSlopeBodyAnm() const
559 {
561 }
562
567
569 {
570 mFaceAngleOverrideFlag.change(flag, enable);
571 }
572
574 {
575 return mFaceAngleOverride;
576 }
577
578 void setFaceAngleOverride(const Angle3& angle)
579 {
580 mFaceAngleOverride = angle;
581 }
582
584 {
585 mFaceAngleOverride.x() = 0;
586 mFaceAngleOverride.y() = 0;
587 mFaceAngleOverride.z() = 0;
588 }
589
591 {
592 mFaceAngleOverrideFlag.makeAllZero();
593 }
594
596 {
597 mFlag.set(cFlag_IsOnHDokan);
598 }
599
601 {
602 mFlag.reset(cFlag_IsOnHDokan);
603 }
604
605 bool isOnHDokan() const
606 {
607 return mFlag.isOn(cFlag_IsOnHDokan);
608 }
609
610 void onWaitL()
611 {
612 mFlag.set(cFlag_IsWaitL);
613 }
614
615 void onWaitR()
616 {
617 mFlag.set(cFlag_IsWaitR);
618 }
619
620 void offWait()
621 {
622 mFlag.reset(cFlag_IsWaitL);
623 mFlag.reset(cFlag_IsWaitR);
624 }
625
626 bool isWaitL() const
627 {
628 return mFlag.isOn(cFlag_IsWaitL);
629 }
630
631 bool isWaitR() const
632 {
633 return mFlag.isOn(cFlag_IsWaitR);
634 }
635
637 {
638 mFlag.set(cFlag_IsRideCloudWait);
639 }
640
642 {
643 mFlag.reset(cFlag_IsRideCloudWait);
644 }
645
646 bool isRideCloudWait() const
647 {
648 return mFlag.isOn(cFlag_IsRideCloudWait);
649 }
650
652 {
653 mFlag.set(cFlag_IsRideLiftWait);
654 }
655
657 {
658 mFlag.reset(cFlag_IsRideLiftWait);
659 }
660
661 bool isRideLiftWait() const
662 {
663 return mFlag.isOn(cFlag_IsRideLiftWait);
664 }
665
666protected:
687 u32,
693 Angle3 mFaceAngleOverride; // X is always set to 0 and never actually used
696
697 static const s32 cJumpMax = 3;
698
699 // Address: 0x1022AC80
701 // Address: 0x1022AC98
703 // Address: 0x1022ACB0
705};
706static_assert(sizeof(PlayerModelBase) == 0xF0);
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
bool isAnmLoopFrame()
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)
bool isBodyAnmStop()
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
void calcStoopOffset()
f32 mStoopOffsetBlendFramesRemaining
Definition PlayerModelBase.h:685
void offBalloonChibiYoshiFly()
void setFrameImpl(s32 skl_anm_idx, f32 frame)
void setFrame(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
void setRate(f32 rate)
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
virtual void draw()
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 play()=0
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
u32 rndInt(u32 max)
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
bool isFootStepTiming()
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