New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
PlayerModel.h
Go to the documentation of this file.
1#pragma once
2
3#include <graphics/AnimExpDecayCalcRatio.h>
4#include <player/PlayerEnum.h>
5#include <player/PlayerModelBase.h>
6
8
9class PlayerModel : public PlayerModelBase // vtbl Address: 0x1016BA2C
10{
11 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101E9D28
12 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101EBA74
13 SEAD_RTTI_OVERRIDE(PlayerModel, PlayerModelBase)
14
15public:
25 static_assert(cBodyType_Num == 5);
26 static_assert(sizeof(BodyType) == 4);
27
35 static_assert(sizeof(ColorType) == 4);
36
67 static_assert(cJointID_Num == 24);
68 static_assert(cJointID_NumWing == 7);
69
77 static_assert(cEnvType_Num == 3);
78
84
92 static_assert(sizeof(TexAnmData) == 0x14);
93
94 enum
95 {
96 cSklAnm_Tail = cSklAnm_BaseNum,
98 };
99 static_assert(cSklAnm_Num == 3);
100
101 enum
102 {
106 };
107 static_assert(cTexAnm_Num == 2);
108
109 enum
110 {
115 };
116 static_assert(cShuAnm_Num == 3);
117
118public:
119 // Address: 0x0291A230
120 PlayerModel(const PlayerObjectResHIO& res_hio, Type type, PlayerMode mode, SceneType scene_type, bool override_lightmap);
121
122 // Address: 0x0291A3D8
124
125 // Address: 0x0291A420
126 f32 getBaseScale() override;
127
128 // Address: 0x0291A444
129 void setModelRenderPass(s32 idx_opa, s32 idx_xlu) override;
130 // Address: 0x0291A530
131 void setModelG3dRenderFlag(u32 flag) override;
132
133 // Address: 0x0291A720
134 void setDark(DarkTargetType type, f32 value) override;
135 // Address: 0x0291A664
136 void applyDark(DarkTargetType type, f32 value);
137
138 // Address: 0x0291A744
140 // Address: 0x0291A768
142
143 // Address: 0x0291A78C
144 void getFaceMtx(sead::Matrixf* mtx);
145
147 {
148 return mPlayerMode;
149 }
150
151 // Address: 0x0291A980
152 void setPlayerModel(PlayerMode mode);
153
154 // Address: 0x0291AC9C
155 void setPlayerMode(PlayerMode mode);
156
157 // Address: 0x0291ADF0
158 bool getHeadPropelJointMtx(sead::Matrixf* mtx);
159
160 // Address: 0x0291AE58
162 // Address: 0x0291AFAC
164
165 // Address: 0x0291AFF4
166 bool isFaceRot();
167 // Address: 0x0291B004
169
170 // Address: 0x0291B010
171 void createPlayerModel(const sead::PtrArray<ModelResource>* anim_mdl_res_array);
172
173 // Address: 0x0291B348
174 void playBody();
175 // Address: 0x0291B448
176 void playHead();
177
178 // Address: 0x0291BD40
179 void calcBody();
180 // Address: 0x0291BDF0
181 void calcHead();
182
183 // Address: 0x0291A1CC
185
186 // Address: 0x0291B384
188
189 // Address: 0x0291B494
191
192 // Address: 0x0291AB0C
194
195 // Address: 0x0291B73C
197
198 // Address: 0x0291B8F8
200
201 // Address: 0x0291BA00
203
204 // Address: 0x0291BC70
206
207 // Address: 0x0291AA1C
208 void copyAnm();
209
210 // Address: 0x0291AB50
212
213 virtual void setColorType(ColorType color_type, bool keep_head_konst3) = 0;
214
215 virtual void setMiiColor(PlayerCharacter mii_color)
216 {
217 }
218
219 virtual void setHeadID(HeadType id)
220 {
221 }
222
223 virtual void updateBonusCap()
224 {
225 }
226
227 virtual void setMusaPtoNmlAnm()
228 {
229 }
230
231 virtual void setPlayerNo(s32 player_no)
232 {
233 mPlayerNo = player_no;
234 }
235
236 virtual void setMiiCapVisible(bool visible)
237 {
238 }
239
240 virtual bool isMiiCapVisible()
241 {
242 return false;
243 }
244
246 {
247 return mNowBodyID;
248 }
249
250 // Address: 0x0291BEEC
251 virtual void setBodyID(BodyType id);
252
253 // Address: 0x0291BF10
254 void setHeadTexAnm(TexAnmType type);
255
256 // Address: 0x0291BF94
257 void setTexAnmType(TexAnmType type) override;
258
259 virtual void setTexAnmTypeImpl(TexAnmType type) = 0;
260
261 // Address: 0x0291BEFC
262 const TexAnmData& getTexAnmData(TexAnmType type) const;
263
264 // Address: 0x02920A18
266
267 // Address: 0x0291C4D8
268 bool setPersonalAnm(ModelResource** anm_res, sead::BufferedSafeString* anm_name, s32 anm_id, bool body) override;
269 // Address: 0x0291DDE4
270 bool setPersonalRideAnm(ModelResource** anm_res, sead::BufferedSafeString* anm_name, s32 anm_id) override;
271
272 // Address: 0x0291BFF4
273 bool getLowWalkAnmName(sead::BufferedSafeString* anm_name, s32 anm_id, bool body);
274
275 // Address: 0x0291E8C0
276 void setAnm(s32 anm_id, f32 rate, f32 blend_duration = 0.0f, f32 frame = 0.0f) override;
277 // Address: 0x0291E9A8
278 void setFootAnmImpl(const ModelResource* anm_res, const sead::SafeString& anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) override;
279 // Address: 0x0291EB30
280 void setBodyAnmImpl(const ModelResource* anm_res, const sead::SafeString& anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) override;
281 // Address: 0x0291ED04
282 void releaseBodyAnm(f32 blend_duration) override;
283 // Address: 0x0291EF78
284 void setCarryBodyAnm(f32 blend_duration, bool bubble_reset_frame) override;
285
286 // Address: 0x0291E8EC
287 void setTailAnm(const ModelResource* anm_res, const sead::SafeString& anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame);
288
289 // Address: 0x0291EC24
290 bool releaseMusaGlideCarryAnm(f32 blend_duration);
291
292 // Address: 0x0291F180
294
297
298 // Address: 0x0291F6B8
299 virtual void onPMusaChange();
300
301 // Address: 0x0291F430
302 void changeLightTexture(AnimModel& anim_model);
303
304 // Address: 0x0291F408
306
307 // Address: 0x0291F734
308 void setStarAnm(AnimModel* anim_model, const ModelResource* mdl_res, const sead::SafeString& name, f32 frame);
309 // Address: 0x0291F7B0
310 void removeStarAnm(AnimModel* anim_model);
311
312 // Address: 0x0291F8F8
313 virtual void setStarAnm();
314 // Address: 0x0291FB58
316 // Address: 0x0291FB64
318
319 // Address: 0x0291FAB0
320 void removeStarAnm(AnimModel* head_anim_model, AnimModel* body_anim_model);
321
322 // Address: 0x0291F9C0
323 void resetTevKColor3Alpha(Model* model);
324
325 virtual f32 getTevColor0Alpha(s32 idx_material) = 0;
326 virtual void setTevColor0Alpha(s32 idx_material, f32 value) = 0;
327 // Address: 0x0291AB74
329
330 // Address: 0x0291FB9C
331 virtual void setInvTevColor0(f32 value);
332 // Address: 0x0291FD90
333 virtual void setTevKColor3(f32 value);
334
335 // Address: 0x0291FF7C
336 virtual void setJointMap();
337
338 // Address: 0x02920024
339 JointID getJointID(const sead::SafeString& name) const;
340
341 void getJointMtx(sead::Matrixf* mtx, JointID id)
342 {
343 PlayerModelBase::getJointMtx(mtx, mJointMap[id]);
344 }
345
346 void getJointPos(sead::Vector3f* pos, JointID id)
347 {
348 PlayerModelBase::getJointPos(pos, mJointMap[id]);
349 }
350
351 // Address: 0x02920118
352 void getJointMtx(sead::Matrixf* mtx, const sead::SafeString& name) override;
353
354 void getJointPos(sead::Vector3f* pos, const sead::SafeString& name)
355 {
356 PlayerModelBase::getJointPos(pos, name);
357 }
358
359 void setPropelRollAngle(const Angle& angle)
360 {
361 mPropelRollAngle = angle;
362 }
363
364 void setPropelRollSpeed(const Angle& speed)
365 {
366 mPropelRollSpeed = speed;
367 }
368
369 void setPropelScale(f32 scale)
370 {
371 mPropelScale = scale;
372 }
373
374 AnimModel* getBodyModel(BodyType type)
375 {
376 return mModelArray[type];
377 }
378
379 AnimModel* getHeadModel(BodyType type)
380 {
381 return mModelArray[type];
382 }
383
384private:
385 inline void setHeadTexAnm_(AnimModel& head_anim_model, const TexAnmData& tex_anm_data);
386
387protected:
409 f32 mAimMotionScale; // lerp of mAimMotionScaleBase and mAimMotionScaleTarget
416
417 // Address: 0x1022AA9C
419
420 // Address: 0x101E699C
421 static const TexAnmData cTexAnmData[];
422};
423static_assert(sizeof(PlayerModel) == 0x218, "PlayerModel size mismatch");
Definition PlayerModel.h:10
Angle mFaceAngle
Definition PlayerModel.h:401
virtual void setJointMap()
void resetTexAnmType()
s32 mFaceRotFrameCnt
Definition PlayerModel.h:404
virtual void setTevColor0Alpha(s32 idx_material, f32 value)=0
virtual bool isMiiCapVisible()
Definition PlayerModel.h:240
bool getHeadPropelJointMtx(sead::Matrixf *mtx)
void applyDark(DarkTargetType type, f32 value)
f32 mAimMotionScaleTarget
Definition PlayerModel.h:410
AnimModel * getBodyModel(BodyType type)
Definition PlayerModel.h:374
virtual void setPlayerNo(s32 player_no)
Definition PlayerModel.h:231
virtual void removeStarAnm_NowBodyID()
virtual void setTexAnmTypeImpl(TexAnmType type)=0
void removeStarAnm(AnimModel *head_anim_model, AnimModel *body_anim_model)
virtual void setBodyID(BodyType id)
void calcBlinkFrame()
virtual void setMusaPtoNmlAnm()
Definition PlayerModel.h:227
void setTexAnmType(TexAnmType type) override
DarkTargetType mDarkTargetType
Definition PlayerModel.h:412
BodyType mNowBodyID
Definition PlayerModel.h:393
bool setPersonalAnm(ModelResource **anm_res, sead::BufferedSafeString *anm_name, s32 anm_id, bool body) override
PlayerMode getPlayerMode()
Definition PlayerModel.h:146
bool isFaceRot()
sead::BitFlag32 mEnvTypeFlag
Definition PlayerModel.h:414
bool checkChange_MusaPtoNml()
virtual void setInvTevColor0(f32 value)
virtual void updateBonusCap()
Definition PlayerModel.h:223
bool mClampFaceRotTimer
Definition PlayerModel.h:405
PlayerMode mPlayerModeOverride
Definition PlayerModel.h:399
void copyAnm()
void calcMusaWing()
void setHeadTexAnm(TexAnmType type)
sead::SafeArray< AnimModel *, cBodyType_Num > mHeadModelArray
Definition PlayerModel.h:389
AnimExpDecayCalcRatio mCalcRatio
Definition PlayerModel.h:397
void setAnm(s32 anm_id, f32 rate, f32 blend_duration=0.0f, f32 frame=0.0f) override
void resetTevKColor3Alpha(Model *model)
BodyType mOldBodyID
Definition PlayerModel.h:392
void getJointMtx(sead::Matrixf *mtx, const sead::SafeString &name) override
void playHead()
void onStarAnm() override
virtual f32 getStoopOffsetTarget()=0
virtual void setTevKColor3(f32 value)
f32 getBaseScale() override
void calcJointLocalMtxPostAnm()
void setPropelRollAngle(const Angle &angle)
Definition PlayerModel.h:359
void setDark(DarkTargetType type, f32 value) override
void getFaceMtx(sead::Matrixf *mtx)
virtual void setMiiColor(PlayerCharacter mii_color)
Definition PlayerModel.h:215
ColorType
Definition PlayerModel.h:29
@ cColorType_Fire
Definition PlayerModel.h:32
@ cColorType_Invalid
Definition PlayerModel.h:30
@ cColorType_Normal
Definition PlayerModel.h:31
@ cColorType_Ice
Definition PlayerModel.h:33
@ cShuAnm_1
Definition PlayerModel.h:112
@ cShuAnm_Color_Star
Definition PlayerModel.h:111
@ cShuAnm_Num
Definition PlayerModel.h:114
@ cShuAnm_Color_PtoNml
Definition PlayerModel.h:113
virtual f32 getAimMotionShareScale()=0
f32 mAimMotionScale
Definition PlayerModel.h:409
JointID
Definition PlayerModel.h:38
@ cJointID_LegL2
Definition PlayerModel.h:42
@ cJointID_WingLegR
Definition PlayerModel.h:57
@ cJointID_LegL1
Definition PlayerModel.h:41
@ cJointID_LegR2
Definition PlayerModel.h:45
@ cJointID_ArmR2
Definition PlayerModel.h:52
@ cJointID_ArmL2
Definition PlayerModel.h:49
@ cJointID_WingArmR
Definition PlayerModel.h:59
@ cJointID_AnkleR1
Definition PlayerModel.h:46
@ cJointID_WingTail2
Definition PlayerModel.h:62
@ cJointID_Face1
Definition PlayerModel.h:55
@ cJointID_AnkleL1
Definition PlayerModel.h:43
@ cJointID_ArmR1
Definition PlayerModel.h:51
@ cJointID_Num
Definition PlayerModel.h:63
@ cJointID_Spin
Definition PlayerModel.h:47
@ cJointID_CapPosition
Definition PlayerModel.h:54
@ cJointID_WingLegL
Definition PlayerModel.h:56
@ cJointID_WingTail1
Definition PlayerModel.h:61
@ cJointID_Wing
Definition PlayerModel.h:60
@ cJointID_SklRoot
Definition PlayerModel.h:40
@ cJointID_ArmL1
Definition PlayerModel.h:48
@ cJointID_WristR1
Definition PlayerModel.h:53
@ cJointID_NumWing
Definition PlayerModel.h:65
@ cJointID_WingArmL
Definition PlayerModel.h:58
@ cJointID_WristL1
Definition PlayerModel.h:50
@ cJointID_AllRoot
Definition PlayerModel.h:39
@ cJointID_LegR1
Definition PlayerModel.h:44
void createPlayerModel(const sead::PtrArray< ModelResource > *anim_mdl_res_array)
void setModelRenderPass(s32 idx_opa, s32 idx_xlu) override
void calcBody()
void setPropelScale(f32 scale)
Definition PlayerModel.h:369
void postChange_MusaPtoNml()
static const TexAnmData cTexAnmData[]
Definition PlayerModel.h:421
void calcBlendRate()
void calc2Impl() override
void getJointMtx(sead::Matrixf *mtx, JointID id)
Definition PlayerModel.h:341
void setBodyAnmImpl(const ModelResource *anm_res, const sead::SafeString &anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) override
sead::SafeArray< s32, cJointID_Num > mJointMap
Definition PlayerModel.h:395
void removeStarAnm(AnimModel *anim_model)
void setTailAnm(const ModelResource *anm_res, const sead::SafeString &anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame)
ColorType mColorType
Definition PlayerModel.h:400
bool setPersonalRideAnm(ModelResource **anm_res, sead::BufferedSafeString *anm_name, s32 anm_id) override
Angle mFaceAngleTarget
Definition PlayerModel.h:402
EnvTypeFlag
Definition PlayerModel.h:80
@ cEnvTypeFlag_Star
Definition PlayerModel.h:81
@ cEnvTypeFlag_P
Definition PlayerModel.h:82
void calcHeadPos()
void calcFaceAngleOverride()
void offStarAnm() override
f32 mDarkColorValue
Definition PlayerModel.h:413
void setModelLoadFlag()
f32 mAimMotionScaleBase
Definition PlayerModel.h:411
@ cSklAnm_Num
Definition PlayerModel.h:97
@ cSklAnm_Tail
Definition PlayerModel.h:96
virtual void onPMusaChange()
Angle mPropelRollSpeed
Definition PlayerModel.h:407
void getJointPos(sead::Vector3f *pos, const sead::SafeString &name)
Definition PlayerModel.h:354
sead::SafeArray< AnimModel *, cBodyType_Num > mModelArray
Definition PlayerModel.h:388
EnvType getEnvType() const
Angle mPropelRollAngle
Definition PlayerModel.h:406
void setClampFaceRot()
void setFootAnmImpl(const ModelResource *anm_res, const sead::SafeString &anm_name, FrameCtrl::PlayMode mode, f32 rate, f32 frame, f32 blend_duration) override
JointID getJointID(const sead::SafeString &name) const
void setPlayerMode(PlayerMode mode)
AnimModel * mHeadModel
Definition PlayerModel.h:391
void draw() override
void setPropelRollSpeed(const Angle &speed)
Definition PlayerModel.h:364
bool getLowWalkAnmName(sead::BufferedSafeString *anm_name, s32 anm_id, bool body)
EnvType
Definition PlayerModel.h:71
@ cEnvType_Num
Definition PlayerModel.h:75
@ cEnvType_Normal
Definition PlayerModel.h:72
@ cEnvType_Star
Definition PlayerModel.h:73
@ cEnvType_P
Definition PlayerModel.h:74
void changeLightTexture(AnimModel &anim_model)
s32 mFaceRotTimer
Definition PlayerModel.h:403
void setStarAnm(AnimModel *anim_model, const ModelResource *mdl_res, const sead::SafeString &name, f32 frame)
const TexAnmData & getTexAnmData(TexAnmType type) const
void playBody()
BodyType getBodyID()
Definition PlayerModel.h:245
bool releaseMusaGlideCarryAnm(f32 blend_duration)
PlayerModel(const PlayerObjectResHIO &res_hio, Type type, PlayerMode mode, SceneType scene_type, bool override_lightmap)
void calcFaceAngle()
virtual void setStarAnm()
void getJointPos(sead::Vector3f *pos, JointID id)
Definition PlayerModel.h:346
virtual void removeStarAnm_OldBodyID()
bool mOverrideLightMap
Definition PlayerModel.h:415
static const Angle cPropelRollBaseSpeed
Definition PlayerModel.h:418
virtual void setHeadID(HeadType id)
Definition PlayerModel.h:219
const PlayerObjectResHIO & mResHio
Definition PlayerModel.h:390
sead::BitFlag16 mModelLoadFlag
Definition PlayerModel.h:394
void setAnmBind() override
void setHeadTexAnm_(AnimModel &head_anim_model, const TexAnmData &tex_anm_data)
PlayerMode mPlayerMode
Definition PlayerModel.h:398
void setModelG3dRenderFlag(u32 flag) override
f32 mPropelScale
Definition PlayerModel.h:408
void setPlayerModel(PlayerMode mode)
void setCarryBodyAnm(f32 blend_duration, bool bubble_reset_frame) override
virtual void setColorType(ColorType color_type, bool keep_head_konst3)=0
s32 mPlayerNo
Definition PlayerModel.h:396
void resetTevColor0Alpha()
void releaseBodyAnm(f32 blend_duration) override
@ cTexAnm_Head
Definition PlayerModel.h:104
@ cTexAnm_Num
Definition PlayerModel.h:105
@ cTexAnm_Color
Definition PlayerModel.h:103
virtual void setMiiCapVisible(bool visible)
Definition PlayerModel.h:236
AnimModel * getHeadModel(BodyType type)
Definition PlayerModel.h:379
void calcHead()
virtual f32 getTevColor0Alpha(s32 idx_material)=0
Definition PlayerModel.h:86
f32 frame
Definition PlayerModel.h:90
f32 rate
Definition PlayerModel.h:89
FrameCtrl::PlayMode play_mode
Definition PlayerModel.h:88
sead::SafeString name
Definition PlayerModel.h:87
Definition PlayerObjectResData.h:6