NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
d_player_model_manager.hpp
1#pragma once
2
3#include <game/bases/d_player_model_base.hpp>
4
6public:
7 u8 mID;
8 float mRate;
9 float mBlendDuration;
10};
11
13public:
14 dPyAnm_HIO_c mAnm[177];
15};
16
17/// @unofficial
19 float a, b, c, d;
20};
21
23public:
24 float mData[5];
25
26 dPyModelData_s getModelData(u8 index) {
27 return modelData[index];
28 }
29
30 dPyModelData_s modelData[3];
31};
32
34public:
35 float mData[4];
36};
37
39public:
40 u8 changeHioType(u8 hioType);
41 float getValue(dPyModelData_s model, u8 powerup); ///< @unofficial
42
43 float getValue(int playerType, int idx, int powerup) {
44 dPyModelData_s modelData = mPyModel[changeHioType(playerType)].getModelData(idx);
45 return getValue(modelData, powerup);
46 }
47
48 enum ScaleIndex_e {};
49
50 float get_08(ScaleIndex_e index) {
51 return m_08[index];
52 }
53
54 u8 mPad[0x8];
55 float m_08[8];
56 dPyAnmMain_HIO_c mPyAnm;
57 dPyModel_HIO_c mPyModel[3];
58 dYoshiModel_HIO_c mYoshiModel[3];
59};
60
61enum AnmID_e {
62 PLAYER_ANIM_WAIT,
63 PLAYER_ANIM_WALK,
64 PLAYER_ANIM_RUN,
65 PLAYER_ANIM_B_DASH,
66 PLAYER_ANIM_B_DASH2,
67 PLAYER_ANIM_JUMP,
68 PLAYER_ANIM_JUMP2,
69 PLAYER_ANIM_JUMPED,
70 PLAYER_ANIM_2JMP_C_1,
71 PLAYER_ANIM_2JMP_C_2,
72 PLAYER_ANIM_2JUMPED,
73 PLAYER_ANIM_ROLL_JUMP,
74 PLAYER_ANIM_2JUMP2,
75 PLAYER_ANIM_MAME_JUMP2,
76 PLAYER_ANIM_TURN,
77 PLAYER_ANIM_TURNED,
78 PLAYER_ANIM_HIPSR,
79 PLAYER_ANIM_HIPAT,
80 PLAYER_ANIM_HIPED,
81 PLAYER_ANIM_HIP_TO_STOOP,
82 PLAYER_ANIM_STOOP,
83 PLAYER_ANIM_STOOP_START,
84 PLAYER_ANIM_SLIP,
85 PLAYER_ANIM_SLIPED,
86 PLAYER_ANIM_SLIP_TO_STOOP,
87 PLAYER_ANIM_CARRY_WAIT,
88 PLAYER_ANIM_CARRY_WALK,
89 PLAYER_ANIM_CARRY_THROW,
90 PLAYER_ANIM_RCARRY_WAIT,
91 PLAYER_ANIM_WSLD,
92 PLAYER_ANIM_FIRE_AT,
93 PLAYER_ANIM_SWIM_FIRE_AT,
94 PLAYER_ANIM_SWIM_FIRE_AT2,
95 PLAYER_ANIM_STAR_ROLL,
96 PLAYER_ANIM_P_SWIM,
97 PLAYER_ANIM_SWIM,
98 PLAYER_ANIM_SWIM_WAIT,
99 PLAYER_ANIM_SWIM_THROW,
100 PLAYER_ANIM_SWIM_WALK,
101 PLAYER_ANIM_SWIM_STANDING,
102 PLAYER_ANIM_PADDLE_1,
103 PLAYER_ANIM_PADDLE_2,
104 PLAYER_ANIM_PADDLE_CARRY,
105 PLAYER_ANIM_TREE_START,
106 PLAYER_ANIM_TREE_WAIT,
107 PLAYER_ANIM_TREE_CLIMB,
108 PLAYER_ANIM_TREE_POSE,
109 PLAYER_ANIM_MONKEY_START,
110 PLAYER_ANIM_MONKEY_WAIT_R,
111 PLAYER_ANIM_MONKEY_WAIT_L,
112 PLAYER_ANIM_MONKEY_R_TO_L,
113 PLAYER_ANIM_MONKEY_L_TO_R,
114 PLAYER_ANIM_NET_WAIT,
115 PLAYER_ANIM_NET_WALK1,
116 PLAYER_ANIM_NET_WALK2,
117 PLAYER_ANIM_NET_ATTACK,
118 PLAYER_ANIM_PEA_PLANT,
119 PLAYER_ANIM_PEA_PLANT_ST,
120 PLAYER_ANIM_PEA_PLANT_WAIT,
121 PLAYER_ANIM_WALL_WAIT,
122 PLAYER_ANIM_WALL_WALK_L,
123 PLAYER_ANIM_WALL_WALK_R,
124 PLAYER_ANIM_HANG_START,
125 PLAYER_ANIM_HANG_UP,
126 PLAYER_ANIM_HANG_WAIT,
127 PLAYER_ANIM_HANG_WALK_L,
128 PLAYER_ANIM_HANG_WALK_R,
129 PLAYER_ANIM_W_JUMP1,
130 PLAYER_ANIM_W_JUMP2,
131 PLAYER_ANIM_2JUMPED_DUPLICATE,
132 PLAYER_ANIM_JUMP_HANG,
133 PLAYER_ANIM_SPIN_ST,
134 PLAYER_ANIM_SPIN_END,
135 PLAYER_ANIM_SPIN_LOW_ST,
136 PLAYER_ANIM_SPIN_LOW_ED,
137 PLAYER_ANIM_SPIN_JUMP2,
138 PLAYER_ANIM_SPIN_JUMP_END,
139 PLAYER_ANIM_DAM_F,
140 PLAYER_ANIM_DAM_B,
141 PLAYER_ANIM_DOW_F,
142 PLAYER_ANIM_DOW_B,
143 PLAYER_ANIM_FIREJMP,
144 PLAYER_ANIM_E_SHOCK,
145 PLAYER_ANIM_DEAD,
146 PLAYER_ANIM_DEAD_POSE,
147 PLAYER_ANIM_RTREE_START,
148 PLAYER_ANIM_RTREE_WAIT,
149 PLAYER_ANIM_RTREE_POSE,
150 PLAYER_ANIM_GOAL_JUMP,
151 PLAYER_ANIM_GOAL_JUMP_ED,
152 PLAYER_ANIM_GOAL_PUTON_CAP,
153 PLAYER_ANIM_PL_GOAL_PUTON_CAP,
154 PLAYER_ANIM_P_GOAL_PUTON_CAP,
155 PLAYER_ANIM_PL_RGOAL_PUTON_CAP,
156 PLAYER_ANIM_P_RGOAL_PUTON_CAP,
157 PLAYER_ANIM_GOAL_PUTON_CAPF,
158 PLAYER_ANIM_R_EAT,
159 PLAYER_ANIM_R_EAT_OUT,
160 PLAYER_ANIM_R_EAT_SUCCESS,
161 PLAYER_ANIM_R_EAT_FAIL,
162 PLAYER_ANIM_R_EAT_SUCCESSB,
163 PLAYER_ANIM_R_EAT_SUCCESSB_DUPLICATE,
164 PLAYER_ANIM_RS_EAT,
165 PLAYER_ANIM_RS_EAT_OUT,
166 PLAYER_ANIM_RS_EAT_SUCCESS,
167 PLAYER_ANIM_RS_EAT_FAIL,
168 PLAYER_ANIM_RS_EAT_SUCCESSB,
169 PLAYER_ANIM_RS_EAT_SUCCESS_DUPLICATE,
170 PLAYER_ANIM_CARRY_P_START,
171 PLAYER_ANIM_CARRY_P_WAIT,
172 PLAYER_ANIM_CARRY_P_WALK,
173 PLAYER_ANIM_CARRY_P_THROW,
174 PLAYER_ANIM_CARRY_P_WAIT_DUPLICATE,
175 PLAYER_ANIM_RIDE_ON,
176 PLAYER_ANIM_F_JUMP,
177 PLAYER_ANIM_SET,
178 PLAYER_ANIM_SET_TO_WAIT,
179 PLAYER_ANIM_STAR_ROLL_DUPLICATE,
180 PLAYER_ANIM_S_JUMP,
181 PLAYER_ANIM_S_JUMP2,
182 PLAYER_ANIM_S_JUMPED,
183 PLAYER_ANIM_GET_DOWN,
184 PLAYER_ANIM_ICE_TURN,
185 PLAYER_ANIM_ICE_TURNED,
186 PLAYER_ANIM_ICE_SLIP_F,
187 PLAYER_ANIM_ICE_SLIP_B,
188 PLAYER_ANIM_ROPE_SWING,
189 PLAYER_ANIM_SHOOT,
190 PLAYER_ANIM_SHOOT_SLIP,
191 PLAYER_ANIM_SHOOT_SLIP_END,
192 PLAYER_ANIM_LOW_WALK_START,
193 PLAYER_ANIM_LOW_WALK,
194 PLAYER_ANIM_SWIM_PIPE,
195 PLAYER_ANIM_DOOR_WALK,
196 PLAYER_ANIM_PL_SPIN_JUMP,
197 PLAYER_ANIM_WAIT_L,
198 PLAYER_ANIM_WAIT_R,
199 PLAYER_ANIM_FIRE_AT2,
200 PLAYER_ANIM_BLOW_UP,
201 PLAYER_ANIM_P_SLIP,
202 PLAYER_ANIM_P_SLIP_JUMP,
203 PLAYER_ANIM_P_SLIP_JUMP2,
204 PLAYER_ANIM_RF_JUMP,
205 PLAYER_ANIM_STAMP,
206 PLAYER_ANIM_WAIT_R_DUPLICATE,
207 PLAYER_ANIM_WAIT_L_DUPLICATE,
208 PLAYER_ANIM_WAIT_R3,
209 PLAYER_ANIM_WAIT_L3,
210 PLAYER_ANIM_BOSS_KEY_GET,
211 PLAYER_ANIM_BALLOON_WAIT,
212 PLAYER_ANIM_SLOPE_WAIT_L,
213 PLAYER_ANIM_SLOPE_WAIT_R,
214 PLAYER_ANIM_SLOPE_WAIT_L2,
215 PLAYER_ANIM_SLOPE_WAIT_R2,
216 PLAYER_ANIM_CARRY_P_WAIT_L,
217 PLAYER_ANIM_CARRY_P_WAIT_R,
218 PLAYER_ANIM_CARRY_WAIT_L,
219 PLAYER_ANIM_CARRY_WAIT_R,
220 PLAYER_ANIM_SPIN_JUMP3,
221 PLAYER_ANIM_RIDE_WAIT,
222 PLAYER_ANIM_P_PADDLE_1,
223 PLAYER_ANIM_P_PADDLE_2,
224 PLAYER_ANIM_POSE_L,
225 PLAYER_ANIM_POSE_R,
226 PLAYER_ANIM_GORL_WAIT,
227 PLAYER_ANIM_DM_NOTICE,
228 PLAYER_ANIM_DM_NOTI_WAIT,
229 PLAYER_ANIM_DM_SURPRISE,
230 PLAYER_ANIM_DM_SURP_WAIT,
231 PLAYER_ANIM_WAIT_SELECT,
232 PLAYER_ANIM_COURSE_IN,
233 PLAYER_ANIM_WAIT_DUPLICATE,
234 PLAYER_ANIM_WAIT_DUPLICATE2,
235 PLAYER_ANIM_DM_ESCORT,
236 PLAYER_ANIM_DM_GLAD,
237 PLAYER_ANIM_ENDING_WAIT,
238 PLAYER_ANIM_COIN_COMP
239};
240
241class dPyMdlMng_c {
242public:
243 enum ModelType_e {};
244 enum SceneType_e {
245 SCENE_TYPE_0
246 };
247
248 dPyMdlMng_c(ModelType_e modelType);
249 virtual ~dPyMdlMng_c();
250 void calc(mMtx_c &);
251 void calc(mVec3_c, mAng3_c, mVec3_c);
252 void calc2();
253 void draw();
254 void play();
255
256 void create(u8 playerNo, u8 powerup, SceneType_e sceneType);
257
258 static dPyAnm_HIO_c &getHIO(u8 anmID) {
259 return m_hio.mPyAnm.mAnm[anmID];
260 }
261
262 void setAnm(int anmID, float rate, float blendDuration, float f) {
263 mpMdl->setAnm(anmID, rate, blendDuration, f);
264 }
265
266 void setAnm(int anmID, float blendDuration, float f) {
267 float rate = getHIO(anmID).mRate;
268 setAnm(anmID, rate, blendDuration, f);
269 }
270
271 void setAnm(int anmID, const dPyAnm_HIO_c &hio, float f = 0.0f) {
272 mpMdl->setAnm(anmID, hio.mRate, hio.mBlendDuration, f);
273 }
274
275 void setAnm(int anmID, float f = 0.0f) {
276 setAnm(anmID, m_hio.mPyAnm.mAnm[(u8) anmID], f);
277 }
278
279 void setAnmOnlyRate(int anmID, const dPyAnm_HIO_c &hio, float a, float b) {
280 mpMdl->setAnm(anmID, hio.mRate, a, b);
281 }
282
283 void setAnmOnlyRate(int anmID, float a, float b) {
284 setAnmOnlyRate(anmID, getHIO(anmID), a, b);
285 }
286
287 bool isAnm(int anmID) const {
288 return mpMdl->mCurrAnmID == anmID;
289 }
290
291 int getAnm() const {
292 return mpMdl->mCurrAnmID;
293 }
294
295 float getLastFrame() const {
296 return mpMdl->mAnm.mFrameMax - 1.0f;
297 }
298
299 bool isAnmStop() const {
300 return mpMdl->mAnm.isStop();
301 }
302
303 mAng3_c getAng() const {
304 return mAng3_c(
305 mpMdl->m_1fc,
306 mpMdl->m_1fe,
307 mpMdl->m_200
308 );
309 }
310 void setAng(mAng3_c v) { mpMdl->setAng(v); }
311
312 u32 getFlags() const {
313 return mpMdl->mFlags;
314 }
315
316 u32 getFlags2() const {
317 return mpMdl->m_17c;
318 }
319
320 mVec3_c &getHatPos() const { return mpMdl->mHatPosMaybe; }
321
322 float getSomeScale() {
323 return m_hio.get_08((dPyMdlBase_HIO_c::ScaleIndex_e) mpMdl->m_152);
324 }
325
326 float getSomeScale2() {
327 return m_hio.m_08[mpMdl->m_152];
328 }
329
330 dPyMdlBase_c *mpMdl;
331 u8 mPad[0x4];
332
333 static dPyMdlBase_HIO_c *getHIO() {
334 return &m_hio;
335 }
336
337 static dPyMdlBase_HIO_c m_hio;
338};
float getValue(dPyModelData_s model, u8 powerup)
A three-dimensional short angle vector.
Definition m_angle.hpp:68
A 3x4 matrix.
Definition m_mtx.hpp:9
A three-dimensional floating point vector.
Definition m_vec.hpp:122