diff options
| author | Elijah Thomas <42302100+elijah-thomas774@users.noreply.github.com> | 2026-10-19 22:56:23 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-10-19 22:56:23 -0400 |
| commit | 96f2dd5497c4ceb595de76fd897fbb1542b27323 (patch) | |
| tree | ab6c520aa8554d24c86a3a91ff33937cf4732736 /include/d/a/obj | |
| parent | fcb030b4813c35d530ffa3d8f6e6a7fcb3788a89 (diff) | |
| parent | e644d260791911cd0e919575ce842f3e4fe50356 (diff) | |
d_a_obj_base OK
Diffstat (limited to 'include/d/a/obj')
| -rw-r--r-- | include/d/a/obj/d_a_obj_base.h | 106 | ||||
| -rw-r--r-- | include/d/a/obj/d_a_obj_desert.h | 42 | ||||
| -rw-r--r-- | include/d/a/obj/d_a_obj_junk_repairing.h | 6 | ||||
| -rw-r--r-- | include/d/a/obj/d_a_obj_tbox.h | 2 |
4 files changed, 91 insertions, 65 deletions
diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h index 393f38b0..a05a9fd3 100644 --- a/include/d/a/obj/d_a_obj_base.h +++ b/include/d/a/obj/d_a_obj_base.h @@ -3,24 +3,21 @@ #include "common.h" #include "d/a/d_a_base.h" -#include "d/a/d_a_salbage_if.h" #include "d/col/c/c_cc_d.h" #include "d/col/c/c_m3d_g_aab.h" #include "d/d_jnt_col.h" #include "d/d_light_env.h" #include "d/d_linkage.h" -#include "egg/math/eggMath.h" -#include "m/m3d/m_shadow.h" #include "m/m3d/m_smdl.h" #include "m/m_angle.h" #include "m/m_mtx.h" #include "m/m_vec.h" #include "m/types_m.h" -// Ghidra: ActorObjectBase -// size: 0x330 -// vtable: 0x805015b8 -// non-official name +class dBgS_Acch; +class dShadowCircle_c; +class dSalvageIf_c; + class dAcObjBase_c : public dAcBase_c { public: enum ObjProperties_e { @@ -59,10 +56,12 @@ public: }; public: - /* 0x0FC */ f32 mYOffset; - /* 0x100 */ f32 field_0x100; - /* 0x104 */ f32 unkfloat; - /* 0x108 */ char field_0x108[12]; + /* 0x0FC */ f32 mSinkDepth; + /* 0x100 */ f32 mDeepSinkTarget; + /* 0x104 */ f32 mShallowSinkTarget; + /* 0x104 */ f32 mDeepSinkRate; + /* 0x104 */ f32 mShallowSinkRate; + /* 0x104 */ f32 mDefaultSinkRate; /* 0x114 */ u16 mTargetFiTextID; /* 0x116 */ u8 mTargetFiRelated; /* 0x118 */ mVec3_c mOldPosition; @@ -70,8 +69,8 @@ public: /* 0x130 */ mVec3_c mPositionCopy3; /* 0x13C */ mAng3_c mAngle; /* 0x144 */ f32 mSpeed; - /* 0x148 */ f32 mAcceleration; - /* 0x14C */ f32 mMaxSpeed; + /* 0x148 */ f32 mGravity; + /* 0x14C */ f32 mMaxFallSpeed; /* 0x150 */ mVec3_c mVelocity; /* 0x15C */ mMtx_c mWorldMtx; /* 0x18C */ cM3dGAab mBoundingBox; @@ -79,7 +78,7 @@ public: /* 0x1A8 */ f32 field_0x1A8; /* 0x1AC */ u32 mObjectActorFlags; /* 0x1B0 */ f32 field_0x1B0; - /* 0x1B4 */ mVec3_c field_0x1B4; + /* 0x1B4 */ mVec3_c mGndNormal; /* 0x1C0 */ cCcD_Stts mStts; /* 0x1FC */ mVec3_c mStartingPos; /* 0x208 */ mAng3_c mStartingRot; @@ -124,7 +123,7 @@ public: } f32 getYOffset() const { - return mYOffset; + return mSinkDepth; } bool isFullyStopped(f32 speed = EGG::Math<f32>::epsilon()) const { @@ -139,8 +138,8 @@ public: return std::fabsf(mVelocity.y) <= speed; } - bool checkYOffsetField_0x100() const { - return mYOffset <= field_0x100; + bool checkAtDeepSinkDepth() const { + return mSinkDepth <= mDeepSinkTarget; } void unsetObjectProperty(u32 property) { @@ -174,8 +173,8 @@ public: static void *getOarcResFile(const char *oarcName); static void *getOarcModelFile(const char *oarcName); static void *getOarcZev(const char *oarcName); - static void *getOarcDZB(const char *dzbName, const char *dzbName2); - static void *getOarcPLC(const char *plcName, const char *plcName2); + static void *getOarcDZB(const char *oarcName, const char *dzbName); + static void *getOarcPLC(const char *oarcName, const char *plcName); public: dAcObjBase_c(); @@ -184,72 +183,59 @@ public: virtual int preExecute() override; virtual void postExecute(MAIN_STATE_e state) override; virtual int preDraw() override; - virtual void *getObjectListEntry(); + virtual fLiNdBa_c *getObjectListEntry(); virtual bool restorePosRotFromCopy() override; virtual bool canBeLinkedToWoodTag(); virtual bool drop(); public: static dAcObjBase_c *create( - fProfile::PROFILE_NAME_e actorId, u32 roomId, u32 params1, const mVec3_c *pos, const mAng3_c *rot, - const mVec3_c *scale, u32 params2 + ProfileName actorId, u32 roomId, u32 params1, const mVec3_c *pos, const mAng3_c *rot, const mVec3_c *scale, + u32 params2 ); static dAcObjBase_c *create( const char *name, u32 roomId, u32 params1, const mVec3_c *pos, const mAng3_c *rot, const mVec3_c *scale, u32 params2, u16 id, s8 viewclipId ); - static dAcObjBase_c *create( - dAcObjBase_c *, fProfile::PROFILE_NAME_e actorId, u32 params1, const mVec3_c *pos, const mAng3_c *rot, - const mVec3_c *scale, u32 params2, u32 roomId - ); - static dAcObjBase_c *findObject(fProfile::PROFILE_NAME_e actorId, fLiMgBa_c *refList, dAcObjBase_c *parent); + static dAcObjBase_c *findObject(ProfileName actorId, fLiMgBa_c *refList, dAcObjBase_c *parent); static dAcObjBase_c *getNextObject(fLiMgBa_c *ref, dAcObjBase_c *parent); bool isPlayer(); void calcVelocity(const mVec3_c &pos, f32 speed); void calcVelocity(); void updateMatrix(); void setDefaultCullDistance(); - void fn_8002EA30(f32, f32, f32, f32, f32, void *); - void fn_8002EA60(void *); - void fn_8002EB30(void *); - - void putInODesert(f32 depth, mVec3_c *position); - void fn_8002ECD0(m3d::smdl_c *smdl, UNKWORD); - // Disabling makes Items and Link Disappear - void drawModelType1(m3d::smdl_c *smdl); - // Disabling make Lava and other objects Disappear - void drawModel2(); - void fn_8002ed20(); - void fn_8002edb0(m3d::mShadowCircle_c &shadow, m3d::smdl_c &smdl, const mSphere_c *sph, s32, s32, f32); - void drawShadow( - m3d::mShadowCircle_c &shadow, void *, const mMtx_c &mtx, const mSphere_c *sph, s32, s32, s32, s32, s32, f32 - ); - void createChildAttached( - fProfile::PROFILE_NAME_e actorId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, u32 params2, - u32 roomId - ); - void createChildNonAttached( - fProfile::PROFILE_NAME_e actorId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, u32 params2, - u32 roomId + void setSinkDepths(f32, f32, f32, f32, f32, dBgS_Acch *); + void calcSinkDepth(const cBgS_PolyInfo &); + void setGndNormal(const cBgS_PolyInfo &); + + bool putInODesert(f32 depth, mVec3_c *position); + void drawModel(m3d::smdl_c *smdl); + void drawModel(m3d::smdl_c *smdl, int lightSetIdx); + bool drawShadowAlone(m3d::smdl_c &mdl); + bool drawShadow(dShadowCircle_c &shadow, m3d::smdl_c &smdl, const mSphere_c &sph, s32, s32, f32); + bool drawShadow( + dShadowCircle_c &shadow, const GXTexObj *pTex, const mMtx_c &mtx, const mSphere_c &sph, s32 priority, s32 alpha, + s32 red, s32 green, s32 blue, f32 height ); void fn_8002efa0(); bool fn_8002eff0(const f32 &, const s16 &, cCcD_Obj *, const f32 &, const f32 &); - void createChildAttached2( - fProfile::PROFILE_NAME_e actorId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, u32 params2, - u32 roomId + + dAcObjBase_c *createChildAttached( + ProfileName actorId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, u32 params2, u32 roomId + ); + dAcObjBase_c *createChildDetached( + ProfileName actorId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, u32 params2, u32 roomId ); - // These may not belong here - static dAcBase_c *createInsectActor( - dAcBase_c *parent, fProfile::PROFILE_NAME_e actorId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, - u32 params2, s32 roomId + static dAcObjBase_c *createInsectActor( + dAcBase_c *parent, ProfileName actorId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, u32 params2, + s32 roomId ); - static dAcBase_c *createActorUnkGroup3( - fProfile::PROFILE_NAME_e actorId, u32 roomId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, - u32 params2 + static dAcObjBase_c *createStageActor( + ProfileName actorId, u32 roomId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, u32 params2 ); - static dAcBase_c *createActorUnkGroup3( + static dAcObjBase_c *createStageActor( const char *name, u32 roomId, u32 params1, const mVec3_c *pos, const mAng3_c *rot, const mVec3_c *scale, u32 params2, u16 id, s8 viewclipId ); diff --git a/include/d/a/obj/d_a_obj_desert.h b/include/d/a/obj/d_a_obj_desert.h index 8c646da5..4cc8080f 100644 --- a/include/d/a/obj/d_a_obj_desert.h +++ b/include/d/a/obj/d_a_obj_desert.h @@ -2,13 +2,55 @@ #define D_A_OBJ_DESERT_H #include "d/a/obj/d_a_obj_base.h" +#include "d/col/bg/d_bg_w_sv.h" +#include "m/m3d/m_smdl.h" +#include "m/m_vec.h" +#include "nw4r/g3d/g3d_scnobj.h" +#include "nw4r/g3d/res/g3d_resfile.h" class dAcODesert : public dAcObjBase_c { public: dAcODesert(); virtual ~dAcODesert(); + class ScnCallback_c : public nw4r::g3d::IScnObjCallback { + public: + ScnCallback_c(dAcODesert *pDesert) : mpDesert(pDesert) {} + virtual void ExecCallback_CALC_MAT(nw4r::g3d::ScnObj::Timing, nw4r::g3d::ScnObj *, u32, void *); + + dAcODesert *mpDesert; + }; + + struct Entry { + Entry() : mIsSet(0) {} + + /* 0x00 */ s32 mIsSet; // Guess + /* 0x04 */ mVec3_c mPosition; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + }; + + void addEntry(const Entry &entry) { + field_0x1684++; + if (field_0x1684 >= 10) { + field_0x1684 = 0; + } + mEntries[field_0x1684] = entry; + } + private: + /* 0x 330 */ nw4r::g3d::ResFile mRes; + /* 0x 334 */ m3d::smdl_c mMdl; + /* 0x 350 */ dBgWSv mBgW; + + /* 0x 568 */ u8 field_0x568[0x590 - 0x568]; + + /* 0x 590 */ ScnCallback_c mScnCallback; + /* 0x 598 */ bool mbRequestCalcMat; // Rename when better name for fn_308_910 is known + + /* 0x */ u8 field_0x599[0x1684 - 0x599]; + /* 0x1684 */ s32 field_0x1684; + /* 0x1688 */ Entry mEntries[1]; }; #endif diff --git a/include/d/a/obj/d_a_obj_junk_repairing.h b/include/d/a/obj/d_a_obj_junk_repairing.h index c40e9c26..55b3e9df 100644 --- a/include/d/a/obj/d_a_obj_junk_repairing.h +++ b/include/d/a/obj/d_a_obj_junk_repairing.h @@ -2,13 +2,11 @@ #define D_A_OBJ_JUNK_REPAIRING_H #include "d/a/obj/d_a_obj_base.h" -#include "m/m3d/m_shadow.h" +#include "d/d_shadow.h" #include "m/m3d/m_smdl.h" #include "nw4r/g3d/res/g3d_resfile.h" #include "s/s_State.hpp" -class dMyShadowCircle_c : public m3d::mShadowCircle_c {}; - class dAcOJunkRep_c : public dAcObjBase_c { public: dAcOJunkRep_c() : mStateMgr(*this), mpModelToUse(nullptr) {} @@ -39,7 +37,7 @@ private: m3d::smdl_c *mpModelToUse; m3d::smdl_c mModel1; m3d::smdl_c mModel2; - dMyShadowCircle_c mShadow; + dShadowCircle_c mShadow; STATE_MGR_DECLARE(dAcOJunkRep_c); }; diff --git a/include/d/a/obj/d_a_obj_tbox.h b/include/d/a/obj/d_a_obj_tbox.h index 368a7f04..e3d1b483 100644 --- a/include/d/a/obj/d_a_obj_tbox.h +++ b/include/d/a/obj/d_a_obj_tbox.h @@ -47,7 +47,7 @@ public: virtual void unkVirtFunc_0x6C() override; virtual void doInteraction(s32) override; - virtual void *getObjectListEntry() override; + virtual fLiNdBa_c *getObjectListEntry() override; STATE_FUNC_DECLARE(dAcTbox_c, DugOut); STATE_FUNC_DECLARE(dAcTbox_c, WaitAppear); |
