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