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
15// vtbl Address: 0x1016BCE4
17{
18 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101E9D24
19 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101EBA78
21
22public:
38 static_assert(cType_Num == 8);
39 static_assert(sizeof(Type) == 4);
40
49 static_assert(sizeof(SceneType) == 4);
50 static_assert(cSceneType_Num == 4);
51
93 static_assert(cTexAnmType_Num == 37);
94 static_assert(sizeof(cTexAnmType_Num) == 4);
95
97 {
98 cDarkTargetType_InvTevColor0 = 0, // Set for normal & tower door
99 cDarkTargetType_TevKColor3 // Set for castle door
100 };
101 static_assert(sizeof(DarkTargetType) == 4);
102
103 enum Flag
104 {
109 cFlag_Bit4 = 1 << 4,
110 cFlag_Bit5 = 1 << 5,
111 cFlag_Bit6 = 1 << 6,
112 // ...
113 cFlag_Bit9 = 1 << 9,
116 cFlag_IsWaitL = 1 << 12,
117 cFlag_IsWaitR = 1 << 13,
120
122 };
123
150 static_assert(sizeof(AnmFlagBit) == 4);
151
159 static_assert(cAnmFlagType_Num == 3);
160
167
173 static_assert(sizeof(HeadType) == 4);
174
180
181 enum
182 {
186 };
187 static_assert(cSklAnm_BaseNum == 2);
188
189public:
190 // Address: 0x02920CA8
191 PlayerModelBase(const sead::SafeString& model_res_key, const sead::SafeString& anm_res_key);
192 // Address: 0x02920E8C
193 virtual ~PlayerModelBase();
194
195 virtual void setTexAnmType(TexAnmType type) = 0;
196
197 virtual bool setPersonalAnm(ModelResource** anm_res, sead::BufferedSafeString* anm_name, s32 anm_id, bool body) = 0;
198 virtual bool setPersonalRideAnm(ModelResource** anm_res, sead::BufferedSafeString* anm_name, s32 anm_id) = 0;
199
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;
202
203 virtual void setAnmBind() = 0;
204
205 virtual void calcImpl() = 0;
206 virtual void calc2Impl() = 0;
207
208 virtual void setModelRenderPass(s32 idx_opa, s32 idx_xlu) = 0;
209 virtual void setModelG3dRenderFlag(u32 flag) = 0; // ModelG3d::RenderFlag
210
211 virtual void setDark(DarkTargetType type, f32 value) = 0;
212
213 // Address: 0x02920EE0
215
216 // Address: 0x02920F88
217 void reset();
218
219 // Address: 0x02920F9C
220 virtual f32 getAnmRate(s32 anm_id);
221 // Address: 0x02920FB0
222 virtual f32 getAnmBlendDuration(s32 anm_id);
223
224 // Address: 0x02921524
225 virtual void setAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
226 // Address: 0x02921280
227 void setBodyAnm(s32 anm_id, f32 rate, f32 frame = 0.0f, f32 blend_duration = 0.0f);
228 // Address: 0x029219F8
229 void copyLinkAnm(f32 blend_duration);
230
231 // Address: 0x02921444
232 void setLinkAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
233 // Address: 0x02921A40
234 void setRideAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f);
235 // Address: 0x029214F0
236 void setSlopeBodyAnm(f32 blend_duration);
237 virtual void releaseBodyAnm(f32 blend_duration) = 0;
238 virtual void setCarryBodyAnm(f32 blend_duration, bool bubble_reset_frame) = 0;
239
240 // Address: 0x02921DB4
241 void setJumpAnmRand(RndType rnd_type);
242 // Address: 0x02921E50
243 virtual bool getJumpAnmName(sead::BufferedSafeString* anm_name, s32 anm_id, bool body);
244
245 // Address: 0x02921088
246 void setRate(f32 rate);
247 // Address: 0x029219F0
249
250 // Address: 0x02921058
251 void setRateDirect(f32 rate);
252 // Address: 0x029220E0
254
255 // Address: 0x029220E8
256 virtual void setBodyRate(f32 rate);
257 // Address: 0x029214E0
259
260 // Address: 0x02920FC4
261 void setRateImpl(s32 skl_anm_idx, f32 rate);
262 // Address: 0x029214B8
263 f32 getRateImpl(s32 skl_anm_idx);
264
265 // Address: 0x0292211C
266 bool isAnmStop();
267 // Address: 0x02922124
269 // Address: 0x029220F0
270 bool isAnmStopImpl(s32 skl_anm_idx);
271
272 // Address: 0x02921178
273 void setFrame(f32 frame);
274 // Address: 0x02921210
276
277 // Address: 0x02921170
278 void setFrameDirect(f32 frame);
279 f32 getFrameDirect() { return getFrame(); }
280
281 // Address: 0x0292212C
282 virtual void setBodyFrame(f32 frame);
283 // Address: 0x029214E8
285
286 // Address: 0x029210F8
287 void setFrameImpl(s32 skl_anm_idx, f32 frame);
288 // Address: 0x029211E8
289 f32 getFrameImpl(s32 skl_anm_idx);
290
291 // Address: 0x02922158
292 bool checkFrame(f32 frame);
293 // Address: 0x02922160
294 bool checkBodyFrame(f32 frame);
295 // Address: 0x02922134
296 bool checkFrameImpl(s32 skl_anm_idx, f32 frame);
297
298 // Address: 0x02922194
300 // Address: Deleted
302 // Address: 0x02922168
303 bool isAnmLoopFrameImpl(s32 skl_anm_idx);
304
305 // Address: 0x0292219C
307
308 // Address: 0x02921060
310
311 // Address: 0x029221B0
312 void getJointMtx(sead::Matrixf* mtx, s32 index);
313 // Address: 0x029221D4
314 void getJointPos(sead::Vector3f* pos, s32 index);
315
316 // Address: 0x02922210
317 virtual void getJointMtx(sead::Matrixf* mtx, const sead::SafeString& name);
318 // Address: 0x029222BC
319 void getJointPos(sead::Vector3f* pos, const sead::SafeString& name);
320
321 virtual void play() = 0;
322
323 // Address: 0x02922304
324 void calc(const sead::Matrixf& mtx);
325 // Address: 0x029224E8
326 void calc2();
327
328 // Address: 0x029224F8
329 virtual void draw();
330
331 // Address: 0x02922578
333
334 // Address: 0x029225AC
335 void onCarry();
336 // Address: 0x029225D0
337 void onLiftUp();
338 // Address: 0x029225F4
340
342 {
343 mFlag.set(cFlag_IsBubbleChibiYoshiShake);
344 }
345
346 // Address: 0x0292250C
347 void offCarry();
348 // Address: 0x02922530
349 void offLiftUp();
350 // Address: 0x02922554
352
354 {
355 mFlag.reset(cFlag_IsBubbleChibiYoshiShake);
356 }
357
358 // Address: 0x0292123C
359 bool isCarry();
360 // Address: 0x02921218
361 bool isLiftUp();
362
364 {
365 return mFlag.isOn(cFlag_IsBalloonChibiYoshiFly);
366 }
367
369 {
370 return mFlag.isOn(cFlag_IsBubbleChibiYoshiShake);
371 }
372
373 virtual void onStarAnm()
374 {
375 mFlag.set(cFlag_IsStarAnm);
376 }
377
378 virtual void offStarAnm()
379 {
380 mFlag.reset(cFlag_IsStarAnm);
381 }
382
383 bool isStarAnm() const
384 {
385 return mFlag.isOn(cFlag_IsStarAnm);
386 }
387
388 // Address: 0x02922618
390
391 // Address: 0x029227D0
393
394 // Address: 0x02921D48
395 u32 rndInt(u32 max);
396
397 virtual f32 getBaseScale() = 0;
398
399 s32 getAnmID() const
400 {
401 return mAnm;
402 }
403
405 {
406 return mModelRes;
407 }
408
410 {
411 return mAnmRes;
412 }
413
414 const sead::Matrixf& getMtxSr() const
415 {
416 return mMtxSr;
417 }
418
420 {
421 return &mHeadTopPos;
422 }
423
425 {
426 return &mHeadPos;
427 }
428
430 {
431 return mSceneType;
432 }
433
434 bool isValidSceneType() const
435 {
436 return 0 <= mSceneType && mSceneType < cSceneType_Num;
437 }
438
440 {
441 return mAnmFlag[type];
442 }
443
445 {
446 return mAnmFlag[cAnmFlagType_Main];
447 }
448
450 {
451 return mAnmFlag[cAnmFlagType_Body];
452 }
453
454 bool isAnmFlag(AnmFlagType type, u32 flag) const
455 {
456 return mAnmFlag[type] & flag;
457 }
458
459 bool isAnmFlagBit(AnmFlagType type, AnmFlagBit bit) const
460 {
461 return isAnmFlag(type, 1 << bit);
462 }
463
464 bool isAnmFlag(u32 flag) const
465 {
466 return isAnmFlag(cAnmFlagType_Main, flag);
467 }
468
469 bool isAnmFlagBit(AnmFlagBit bit) const
470 {
472 }
473
474 bool isSitAnm() const
475 {
477 }
478
479 bool isCarryAnm() const
480 {
482 }
483
484 bool isHangAnm() const
485 {
487 }
488
489 bool isHangCliffAnm() const
490 {
492 }
493
494 bool isSwimAnm() const
495 {
497 }
498
499 bool isJumpAnm() const
500 {
502 }
503
504 bool isDirAnm() const
505 {
506 return isAnmFlag(1 << cAnmFlagBit_Dir_L | 1 << cAnmFlagBit_Dir_R);
507 }
508
509 bool isDirAnmL() const
510 {
512 }
513
514 bool isDirAnmR() const
515 {
517 }
518
523
524 bool isMusaPersonalAnm() const
525 {
527 }
528
533
538
539 bool isBodyAnmFlag(u32 flag) const
540 {
541 return isAnmFlag(cAnmFlagType_Body, flag);
542 }
543
545 {
547 }
548
549 bool isCarryBodyAnm() const
550 {
552 }
553
554 bool isJumpBodyAnm() const
555 {
557 }
558
559 bool isSlopeBodyAnm() const
560 {
562 }
563
568
570 {
571 mFaceAngleOverrideFlag.change(flag, enable);
572 }
573
575 {
576 return mFaceAngleOverride;
577 }
578
579 void setFaceAngleOverride(const Angle3& angle)
580 {
581 mFaceAngleOverride = angle;
582 }
583
585 {
586 mFaceAngleOverride.x() = 0;
587 mFaceAngleOverride.y() = 0;
588 mFaceAngleOverride.z() = 0;
589 }
590
592 {
593 mFaceAngleOverrideFlag.makeAllZero();
594 }
595
597 {
598 mFlag.set(cFlag_IsOnHDokan);
599 }
600
602 {
603 mFlag.reset(cFlag_IsOnHDokan);
604 }
605
606 bool isOnHDokan() const
607 {
608 return mFlag.isOn(cFlag_IsOnHDokan);
609 }
610
611 void onWaitL()
612 {
613 mFlag.set(cFlag_IsWaitL);
614 }
615
616 void onWaitR()
617 {
618 mFlag.set(cFlag_IsWaitR);
619 }
620
621 void offWait()
622 {
623 mFlag.reset(cFlag_IsWaitL);
624 mFlag.reset(cFlag_IsWaitR);
625 }
626
627 bool isWaitL() const
628 {
629 return mFlag.isOn(cFlag_IsWaitL);
630 }
631
632 bool isWaitR() const
633 {
634 return mFlag.isOn(cFlag_IsWaitR);
635 }
636
638 {
639 mFlag.set(cFlag_IsRideCloudWait);
640 }
641
643 {
644 mFlag.reset(cFlag_IsRideCloudWait);
645 }
646
647 bool isRideCloudWait() const
648 {
649 return mFlag.isOn(cFlag_IsRideCloudWait);
650 }
651
653 {
654 mFlag.set(cFlag_IsRideLiftWait);
655 }
656
658 {
659 mFlag.reset(cFlag_IsRideLiftWait);
660 }
661
662 bool isRideLiftWait() const
663 {
664 return mFlag.isOn(cFlag_IsRideLiftWait);
665 }
666
667protected:
688 u32,
694 Angle3 mFaceAngleOverride; // X is always set to 0 and never actually used
697
698 static const s32 cJumpMax = 3;
699
700 // Address: 0x1022AC80
702 // Address: 0x1022AC98
704 // Address: 0x1022ACB0
706};
707static_assert(sizeof(PlayerModelBase) == 0xF0);
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
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: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)
bool isBodyAnmStop()
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
void calcStoopOffset()
f32 mStoopOffsetBlendFramesRemaining
Definition PlayerModelBase.h:686
void offBalloonChibiYoshiFly()
void setFrameImpl(s32 skl_anm_idx, f32 frame)
void setFrame(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
void setRate(f32 rate)
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
virtual void draw()
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 play()=0
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
u32 rndInt(u32 max)
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
bool isFootStepTiming()
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