3#include <game/bases/d_player_model_base.hpp>
27 return modelData[index];
40 u8 changeHioType(u8 hioType);
43 float getValue(
int playerType,
int idx,
int powerup) {
44 dPyModelData_s modelData = mPyModel[changeHioType(playerType)].getModelData(idx);
50 float get_08(ScaleIndex_e index) {
56 dPyAnmMain_HIO_c mPyAnm;
57 dPyModel_HIO_c mPyModel[3];
58 dYoshiModel_HIO_c mYoshiModel[3];
73 PLAYER_ANIM_ROLL_JUMP,
75 PLAYER_ANIM_MAME_JUMP2,
81 PLAYER_ANIM_HIP_TO_STOOP,
83 PLAYER_ANIM_STOOP_START,
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,
93 PLAYER_ANIM_SWIM_FIRE_AT,
94 PLAYER_ANIM_SWIM_FIRE_AT2,
95 PLAYER_ANIM_STAR_ROLL,
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,
126 PLAYER_ANIM_HANG_WAIT,
127 PLAYER_ANIM_HANG_WALK_L,
128 PLAYER_ANIM_HANG_WALK_R,
131 PLAYER_ANIM_2JUMPED_DUPLICATE,
132 PLAYER_ANIM_JUMP_HANG,
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,
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,
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,
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,
178 PLAYER_ANIM_SET_TO_WAIT,
179 PLAYER_ANIM_STAR_ROLL_DUPLICATE,
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,
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,
199 PLAYER_ANIM_FIRE_AT2,
202 PLAYER_ANIM_P_SLIP_JUMP,
203 PLAYER_ANIM_P_SLIP_JUMP2,
206 PLAYER_ANIM_WAIT_R_DUPLICATE,
207 PLAYER_ANIM_WAIT_L_DUPLICATE,
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,
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,
237 PLAYER_ANIM_ENDING_WAIT,
238 PLAYER_ANIM_COIN_COMP
248 dPyMdlMng_c(ModelType_e modelType);
249 virtual ~dPyMdlMng_c();
256 void create(u8 playerNo, u8 powerup, SceneType_e sceneType);
259 return m_hio.mPyAnm.mAnm[anmID];
262 void setAnm(
int anmID,
float rate,
float blendDuration,
float f) {
263 mpMdl->setAnm(anmID, rate, blendDuration, f);
266 void setAnm(
int anmID,
float blendDuration,
float f) {
267 float rate = getHIO(anmID).mRate;
268 setAnm(anmID, rate, blendDuration, f);
271 void setAnm(
int anmID,
const dPyAnm_HIO_c &hio,
float f = 0.0f) {
272 mpMdl->setAnm(anmID, hio.mRate, hio.mBlendDuration, f);
275 void setAnm(
int anmID,
float f = 0.0f) {
276 setAnm(anmID, m_hio.mPyAnm.mAnm[(u8) anmID], f);
279 void setAnmOnlyRate(
int anmID,
const dPyAnm_HIO_c &hio,
float a,
float b) {
280 mpMdl->setAnm(anmID, hio.mRate, a, b);
283 void setAnmOnlyRate(
int anmID,
float a,
float b) {
284 setAnmOnlyRate(anmID, getHIO(anmID), a, b);
287 bool isAnm(
int anmID)
const {
288 return mpMdl->mCurrAnmID == anmID;
292 return mpMdl->mCurrAnmID;
295 float getLastFrame()
const {
296 return mpMdl->mAnm.mFrameMax - 1.0f;
299 bool isAnmStop()
const {
300 return mpMdl->mAnm.isStop();
310 void setAng(
mAng3_c v) { mpMdl->setAng(v); }
312 u32 getFlags()
const {
313 return mpMdl->mFlags;
316 u32 getFlags2()
const {
320 mVec3_c &getHatPos()
const {
return mpMdl->mHatPosMaybe; }
322 float getSomeScale() {
323 return m_hio.get_08((dPyMdlBase_HIO_c::ScaleIndex_e) mpMdl->m_152);
326 float getSomeScale2() {
327 return m_hio.m_08[mpMdl->m_152];
float getValue(dPyModelData_s model, u8 powerup)
A three-dimensional short angle vector.
A three-dimensional floating point vector.