mirror of https://github.com/zeldaret/tp
135 lines
3.3 KiB
C++
135 lines
3.3 KiB
C++
#ifndef D_A_OBJ_MIE_H
|
|
#define D_A_OBJ_MIE_H
|
|
|
|
#include "SSystem/SComponent/c_math.h"
|
|
#include "d/d_bg_s_acch.h"
|
|
#include "d/d_cc_d.h"
|
|
#include "f_op/f_op_actor_mng.h"
|
|
|
|
struct daObj_Mie_HIOParam {
|
|
/* 0x00 */ f32 focus_offset;
|
|
/* 0x04 */ f32 gravity;
|
|
/* 0x08 */ f32 scale;
|
|
/* 0x0C */ f32 real_shadow_size;
|
|
/* 0x10 */ f32 weight;
|
|
/* 0x14 */ f32 height;
|
|
/* 0x18 */ f32 knee_length;
|
|
/* 0x1C */ f32 width;
|
|
/* 0x20 */ f32 firing_rate;
|
|
/* 0x24 */ f32 launch_angle;
|
|
/* 0x28 */ f32 floating_offset;
|
|
};
|
|
|
|
struct daObj_Mie_Param_c {
|
|
virtual ~daObj_Mie_Param_c() {}
|
|
static const daObj_Mie_HIOParam m;
|
|
};
|
|
|
|
class daObj_Mie_HIO_c
|
|
#if DEBUG
|
|
: public mDoHIO_entry_c
|
|
#endif
|
|
{
|
|
public:
|
|
daObj_Mie_HIO_c() {
|
|
mParams = daObj_Mie_Param_c::m;
|
|
}
|
|
|
|
void genMessage(JORMContext*);
|
|
virtual ~daObj_Mie_HIO_c() {}
|
|
|
|
daObj_Mie_HIOParam mParams;
|
|
};
|
|
|
|
/**
|
|
* @ingroup actors-objects
|
|
* @class daObj_Mie_c
|
|
* @brief Gengle (Cat)
|
|
*
|
|
* @details
|
|
*
|
|
*/
|
|
class daObj_Mie_c : public fopAc_ac_c {
|
|
private:
|
|
/* 0x568 */ daObj_Mie_HIO_c* mHIO;
|
|
/* 0x56C */ request_of_phase_process_class mPhase;
|
|
/* 0x574 */ J3DModel* mModel;
|
|
/* 0x578 */ dBgS_ObjAcch mAcch;
|
|
/* 0x750 */ dCcD_Stts mStts;
|
|
/* 0x78C */ dBgS_AcchCir mAcchCir;
|
|
/* 0x7CC */ cBgS_GndChk mGndChk;
|
|
/* 0x808 */ dCcD_Cyl mCyl;
|
|
/* 0x944 */ cM3dGLin mLine;
|
|
/* 0x960 */ dBgS_LinChk mLinChk;
|
|
/* 0x9D0 */ u8 mType;
|
|
/* 0x9D4 */ cXyz field_0x9d4;
|
|
/* 0x9E0 */ cXyz field_0x9e0;
|
|
/* 0x9EC */ csXyz field_0x9ec;
|
|
/* 0x9F4 */ int field_0x9f4;
|
|
/* 0x9F8 */ int field_0x9f8;
|
|
/* 0x9FC */ f32 field_0x9fc;
|
|
/* 0xA00 */ f32 field_0xa00;
|
|
/* 0xA04 */ f32 field_0xa04;
|
|
/* 0xA08 */ f32 field_0xa08;
|
|
/* 0xA0C */ f32 field_0xa0c;
|
|
/* 0xA10 */ s16 field_0xa10;
|
|
/* 0xA12 */ s16 field_0xa12;
|
|
/* 0xA14 */ s16 field_0xa14;
|
|
/* 0xA16 */ s16 field_0xa16;
|
|
/* 0xA18 */ s16 field_0xa18;
|
|
/* 0xA18 */ int field_0xa1c;
|
|
/* 0xA18 */ u32 field_0xa20[4];
|
|
/* 0xA38 */ u32 field_0xa30;
|
|
/* 0xA38 */ u32 field_0xa34;
|
|
/* 0xA38 */ u32 field_0xa38;
|
|
/* 0xA3C */ u32 field_0xa3c;
|
|
/* 0xA40 */ u8 field_0xa40;
|
|
/* 0xA41 */ u8 field_0xa41;
|
|
/* 0xA42 */ u8 field_0xa42;
|
|
/* 0xA43 */ u8 field_0xa43;
|
|
/* 0xA44 */ u8 field_0xa44;
|
|
/* 0xA45 */ u8 field_0xa45;
|
|
/* 0xA46 */ u8 field_0xa46;
|
|
/* 0xA47 */ u8 field_0xa47;
|
|
/* 0xA48 */ int field_0xa48;
|
|
public:
|
|
enum Type {
|
|
TYPE_0,
|
|
};
|
|
|
|
virtual ~daObj_Mie_c();
|
|
int create();
|
|
int CreateHeap();
|
|
int Delete();
|
|
int Execute();
|
|
int Draw();
|
|
static int createHeapCallBack(fopAc_ac_c*);
|
|
static void* srchPouyaa(void*, void*);
|
|
void setEnvTevColor();
|
|
void setRoomNo();
|
|
void setMtx();
|
|
s16 calcRollAngle(s16, int);
|
|
int getWallAngle(s16, s16*);
|
|
void setSmokePrtcl();
|
|
void setWaterPrtcl();
|
|
void setHamonPrtcl();
|
|
|
|
u8 getType() { return TYPE_0; }
|
|
void popup(f32 param_1, f32 param_2, cXyz* param_3) {
|
|
if (param_3 != NULL) {
|
|
current.pos = *param_3;
|
|
home.pos = current.pos;
|
|
}
|
|
s16 sVar3 = cM_deg2s(param_2);
|
|
speed.setall(0.0f);
|
|
speed.y = param_1 * cM_ssin(sVar3);
|
|
speedF = param_1 * cM_scos(sVar3);
|
|
field_0xa14 = 0x4000;
|
|
field_0xa44 = 1;
|
|
}
|
|
};
|
|
|
|
STATIC_ASSERT(sizeof(daObj_Mie_c) == 0xa50);
|
|
|
|
#endif /* D_A_OBJ_MIE_H */
|