d_a_obj_flag2 equivalent (#2480)

* d_a_obj_flag2 equivalent

* flag2 cleanup
This commit is contained in:
hatal175 2025-06-11 05:22:05 +03:00 committed by GitHub
parent 932f67e05c
commit 4cf11063f6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 521 additions and 822 deletions

View File

@ -1913,7 +1913,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_firepillar"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_firepillar2"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_flag"),
ActorRel(NonMatching, "d_a_obj_flag2"),
ActorRel(Equivalent, "d_a_obj_flag2"), # weak function order
ActorRel(NonMatching, "d_a_obj_flag3"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_food"),
ActorRel(NonMatching, "d_a_obj_fw"),

View File

@ -1,8 +1,65 @@
#ifndef D_A_OBJ_FLAG2_H
#define D_A_OBJ_FLAG2_H
#include "d/d_cc_d.h"
#include "f_op/f_op_actor_mng.h"
struct daObjFlag2_Attr_c {
/* 0x00 */ f32 mGravity;
/* 0x04 */ f32 mSpringCoeeficient;
/* 0x08 */ f32 mDecayRate;
/* 0x0C */ f32 mWindCoefficient;
/* 0x10 */ f32 mTornado;
};
class FlagCloth_c : public J3DPacket {
public:
/* 80BEC658 */ void initFlagPos(cXyz*, fopAc_ac_c*);
/* 80BEC7CC */ cXyz calcFlagFactor(cXyz*, cXyz*, cXyz*, int);
/* 80BEC928 */ void calcFlagFactorSub(cXyz*, cXyz*, cXyz*, f32);
/* 80BECAE0 */ void calcFlagNormal(cXyz*, int);
/* 80BECC34 */ inline void calcFlagNormalBack();
/* 80BECC78 */ void initCcSphere(fopAc_ac_c*);
/* 80BECCE4 */ void setCcSphere();
/* 80BECD98 */ void execute();
/* 80BEE0B8 */ cXyz getTargetPos() { return mPositions[4]; }
/* 80BECF30 */ void draw();
/* 80BED9C4 */ virtual ~FlagCloth_c() {}
cXyz* getPos() { return mPositions; }
cXyz* getNormal() { return mNormals; }
cXyz* getNormalBack() { return mNormalBacks; }
cXyz* getVec() { return mVecs; }
void setSpringRate(f32 rate) { mSpringRate = rate; }
void setWindRate(f32 rate) { mWindRate = rate; }
void setDecayRate(f32 rate) { mDecayRate = rate; }
void setGravity(f32 rate) { mGravity = rate; }
void setTornado(f32 tornado) { mTornado = tornado; }
GXTexObj* getImageTexObj() { return &mTexObj; }
void setTexCoord_p(void* texCoordP) { mpTexCoord = texCoordP; }
/* 0x010 */ dKy_tevstr_c mTevStr;
/* 0x398 */ GXTexObj mTexObj;
/* 0x3B8 */ dCcD_Stts mStts;
/* 0x3F4 */ dCcD_Sph mSph;
/* 0x52C */ u8 field_0x52c[0x540 - 0x52c];
/* 0x540 */ cXyz mPositions[21];
/* 0x63C */ f32 field_0x63c;
/* 0x640 */ cXyz mNormals[21];
/* 0x73C */ f32 field_0x73c;
/* 0x740 */ cXyz mNormalBacks[21];
/* 0x740 */ cXyz mVecs[21];
/* 0x938 */ cXyz* mpFlagPosition;
/* 0x93C */ Mtx mModelMtx;
/* 0x96C */ void* mpTexCoord;
/* 0x970 */ f32 mSpringRate;
/* 0x974 */ f32 mWindRate;
/* 0x978 */ f32 mDecayRate;
/* 0x97C */ f32 mGravity;
/* 0x980 */ f32 mTornado;
};
/**
* @ingroup actors-objects
* @class daObjFlag2_c
@ -17,34 +74,31 @@ public:
/* 80BED368 */ void initBaseMtx();
/* 80BED3B8 */ void initCollision();
/* 80BED44C */ void setCollision();
/* 80BED480 */ void createHeap();
/* 80BED6A0 */ void create();
/* 80BED480 */ int createHeap();
/* 80BED6A0 */ int create();
/* 80BED7A4 */ daObjFlag2_c();
/* 80BEDCE0 */ void draw();
/* 80BEDCE0 */ int draw();
/* 80BEDEE0 */ ~daObjFlag2_c();
inline int execute();
static u8 const M_attr[20];
const daObjFlag2_Attr_c& attr() const { return M_attr; }
static daObjFlag2_Attr_c const M_attr;
private:
/* 0x568 */ u8 field_0x568[0x10c0 - 0x568];
/* 0x0568 */ J3DModel* mModel;
/* 0x056C */ request_of_phase_process_class mFlagPhase;
/* 0x0574 */ request_of_phase_process_class mArcPhase;
/* 0x057C */ dCcD_Stts mStts;
/* 0x05B8 */ dCcD_Cyl mCyl;
/* 0x06F4 */ u8 field_0x6f4[0x700 - 0x6f4];
/* 0x0700 */ FlagCloth_c mFlagCloth;
/* 0x1084 */ u8 field_0x1084[0x10a0 - 0x1084];
/* 0x10A0 */ cXyz mFlagPosition;
/* 0x10AC */ bool mFlagValid;
/* 0x10AD */ char mFlagName[16];
};
STATIC_ASSERT(sizeof(daObjFlag2_c) == 0x10c0);
class FlagCloth_c {
public:
/* 80BEC658 */ void initFlagPos(cXyz*, fopAc_ac_c*);
/* 80BEC7CC */ void calcFlagFactor(cXyz*, cXyz*, cXyz*, int);
/* 80BEC928 */ void calcFlagFactorSub(cXyz*, cXyz*, cXyz*, f32);
/* 80BECAE0 */ void calcFlagNormal(cXyz*, int);
/* 80BECC34 */ void calcFlagNormalBack();
/* 80BECC78 */ void initCcSphere(fopAc_ac_c*);
/* 80BECCE4 */ void setCcSphere();
/* 80BECD98 */ void execute();
/* 80BECF30 */ void draw();
/* 80BED9C4 */ ~FlagCloth_c();
/* 80BEE0B8 */ void getTargetPos();
};
#endif /* D_A_OBJ_FLAG2_H */

View File

@ -635,5 +635,6 @@ void dKy_bgparts_activelight_set(LIGHT_INFLUENCE* light_inf_p, int bgpart_id);
void dKy_bgparts_activelight_cut(int bgpart_id);
int dKy_Indoor_check();
void dKy_GfFog_tevstr_set(dKy_tevstr_c* tevstr_p);
void dKy_setLight_mine(dKy_tevstr_c* tevstr_p);
#endif /* D_KANKYO_D_KANKYO_H */

File diff suppressed because it is too large Load Diff