summaryrefslogtreecommitdiff
path: root/include/d
diff options
context:
space:
mode:
authorElijah Thomas <42302100+elijah-thomas774@users.noreply.github.com>2026-10-19 22:56:23 -0400
committerGitHub <noreply@github.com>2026-10-19 22:56:23 -0400
commit96f2dd5497c4ceb595de76fd897fbb1542b27323 (patch)
treeab6c520aa8554d24c86a3a91ff33937cf4732736 /include/d
parentfcb030b4813c35d530ffa3d8f6e6a7fcb3788a89 (diff)
parente644d260791911cd0e919575ce842f3e4fe50356 (diff)
Merge pull request #367 from elijah-thomas774/basesHEADmain
d_a_obj_base OK
Diffstat (limited to 'include/d')
-rw-r--r--include/d/a/d_a_base.h11
-rw-r--r--include/d/a/d_a_player.h5
-rw-r--r--include/d/a/e/d_a_e_remly.h2
-rw-r--r--include/d/a/e/d_a_en_base.h3
-rw-r--r--include/d/a/npc/d_a_npc.h3
-rw-r--r--include/d/a/obj/d_a_obj_base.h106
-rw-r--r--include/d/a/obj/d_a_obj_desert.h42
-rw-r--r--include/d/a/obj/d_a_obj_junk_repairing.h6
-rw-r--r--include/d/a/obj/d_a_obj_tbox.h2
-rw-r--r--include/d/col/bg/d_bg_pc.h2
-rw-r--r--include/d/col/bg/d_bg_s_acch.h5
-rw-r--r--include/d/d_linkage.h8
-rw-r--r--include/d/d_player_act.h2
-rw-r--r--include/d/d_shadow.h17
14 files changed, 136 insertions, 78 deletions
diff --git a/include/d/a/d_a_base.h b/include/d/a/d_a_base.h
index b405f69d..1b9478a2 100644
--- a/include/d/a/d_a_base.h
+++ b/include/d/a/d_a_base.h
@@ -76,6 +76,7 @@ public:
AC_PROP_0x100 = (1 << 8),
AC_PROP_0x400 = (1 << 10),
AC_PROP_0x800 = (1 << 11),
+ AC_PROP_0x1000 = (1 << 12),
AC_PROP_0x2000000 = (1 << 25),
AC_PROP_0x4000000 = (1 << 26),
AC_PROP_0x8000000 = (1 << 27),
@@ -223,8 +224,8 @@ public:
public:
static void setTempCreateParams(
- mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, s32 roomId, u32 params2, dAcBase_c *parent, u8 subtype, u16 unkFlag,
- s8 viewClipIdx, const ActorInfo *actorInfo
+ const mVec3_c *pos, const mAng3_c *rot, const mVec3_c *scale, s32 roomId, u32 params2, dAcBase_c *parent,
+ u8 subtype, u16 unkFlag, s8 viewClipIdx, const ActorInfo *actorInfo
);
dSoundSourceIf_c *createSoundSource();
@@ -312,9 +313,9 @@ public:
static u32 s_Create_Params2;
static u16 s_Create_UnkFlags;
static u8 s_Create_ViewClipIdx;
- static mVec3_c *s_Create_Position;
- static mAng3_c *s_Create_Rotation;
- static mVec3_c *s_Create_Scale;
+ static const mVec3_c *s_Create_Position;
+ static const mAng3_c *s_Create_Rotation;
+ static const mVec3_c *s_Create_Scale;
static dAcBase_c *s_Create_Parent;
static const ActorInfo *s_Create_ActorInfo;
static u8 s_Create_Subtype;
diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h
index 69849bc9..b2e72ef6 100644
--- a/include/d/a/d_a_player.h
+++ b/include/d/a/d_a_player.h
@@ -9,6 +9,8 @@
#include "d/d_player_mdl.h"
#include "m/m_angle.h"
#include "m/m_color.h"
+#include "m/m_mtx.h"
+#include "m/m_sphere.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "toBeSorted/file_manager.h"
#include "toBeSorted/minigame_mgr.h"
@@ -122,6 +124,9 @@ public:
static bool isInMinigameRollerCoaster();
static bool isInMinigameSprialChargeTutorial();
+ bool updateShadow(const m3d::smdl_c &mdl);
+ bool updateShadow(const mSphere_c &sph, const mMtx_c &mtx);
+
public:
f32 getField_0x4564() const {
return field_0x4564;
diff --git a/include/d/a/e/d_a_e_remly.h b/include/d/a/e/d_a_e_remly.h
index b7f27ce8..9eab72f6 100644
--- a/include/d/a/e/d_a_e_remly.h
+++ b/include/d/a/e/d_a_e_remly.h
@@ -194,7 +194,7 @@ private:
/* 0xB32 */ mAng field_0xB32;
/* 0xB34 */ mAng field_0xB34;
/* 0xB38 */ f32 mYPosition;
- /* 0xB3C */ f32 mYOffset;
+ /* 0xB3C */ f32 mSinkDepth;
/* 0xB40 */ f32 mScaleFTarget;
/* 0xB44 */ u16 field_0xB44;
/* 0xB46 */ u16 field_0xB46;
diff --git a/include/d/a/e/d_a_en_base.h b/include/d/a/e/d_a_en_base.h
index 2342540b..17a99924 100644
--- a/include/d/a/e/d_a_en_base.h
+++ b/include/d/a/e/d_a_en_base.h
@@ -5,6 +5,7 @@
#include "d/a/obj/d_a_obj_base.h"
#include "d/d_cc.h"
#include "f/f_list_mg.h"
+#include "f/f_list_nd.h"
#include "m/m3d/m_mdl.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
@@ -36,7 +37,7 @@ public:
virtual void postExecute(MAIN_STATE_e state) override;
virtual int preDraw() override;
- virtual void *getObjectListEntry() override {
+ virtual fLiNdBa_c *getObjectListEntry() override {
return &mEnemyLink;
}
diff --git a/include/d/a/npc/d_a_npc.h b/include/d/a/npc/d_a_npc.h
index 8be382ee..2bf3662e 100644
--- a/include/d/a/npc/d_a_npc.h
+++ b/include/d/a/npc/d_a_npc.h
@@ -6,6 +6,7 @@
#include "d/a/d_a_itembase.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/d_message.h"
+#include "f/f_list_nd.h"
#include "libms/flowfile.h"
#include "m/m3d/m_anmchr.h"
#include "m/m3d/m_anmtexsrt.h"
@@ -374,7 +375,7 @@ public:
}
/* vt 0x0E8 */ virtual void acNpc_vt_0xE8();
- /* vt 0x074 */ virtual void *getObjectListEntry() override {
+ /* vt 0x074 */ virtual fLiNdBa_c *getObjectListEntry() override {
return &mNpcListEntry;
}
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);
diff --git a/include/d/col/bg/d_bg_pc.h b/include/d/col/bg/d_bg_pc.h
index a5845962..832ea0b2 100644
--- a/include/d/col/bg/d_bg_pc.h
+++ b/include/d/col/bg/d_bg_pc.h
@@ -62,6 +62,8 @@ enum dBgPc_Attribute {
POLY_ATTR_SLOPE_RUN = 15,
POLY_ATTR_SAND_DEEP_SLOW = 16,
POLY_ATTR_CURSED_WATER = 17,
+
+ POLY_ATTR_SAND_SHALLOW2 = 20,
};
class dBgPc {
public:
diff --git a/include/d/col/bg/d_bg_s_acch.h b/include/d/col/bg/d_bg_s_acch.h
index f1227411..f143f187 100644
--- a/include/d/col/bg/d_bg_s_acch.h
+++ b/include/d/col/bg/d_bg_s_acch.h
@@ -140,7 +140,7 @@ public:
/* 0x 0020 0000 */ GND_THIN_CELLING_OFF = (1 << 21),
/* 0x 0040 0000 */ WALL_SORT = (1 << 22),
/* 0x 0080 0000 */ LINE_DOWN = (1 << 23),
-
+ /* 0x 0100 0000 */ ACCH_FLAG_0x1000000 = (1 << 24),
/* 0x 0200 0000 */ ACCH_FLAG_0x2000000 = (1 << 25),
/* 0x 0400 0000 */ ACCH_FLAG_0x4000000 = (1 << 26),
/* 0x 0800 0000 */ ACCH_FLAG_0x8000000 = (1 << 27),
@@ -281,6 +281,9 @@ public:
void SetWaterNone() {
mFlags |= WATER_NONE;
}
+ void SetGroundSink() {
+ mFlags |= ACCH_FLAG_0x1000000;
+ }
bool ChkWallHit() {
return mFlags & WALL_HIT;
}
diff --git a/include/d/d_linkage.h b/include/d/d_linkage.h
index 9cf24418..5ee53ff5 100644
--- a/include/d/d_linkage.h
+++ b/include/d/d_linkage.h
@@ -63,6 +63,10 @@ public:
return mState == state;
}
+ void setState(State_e state) {
+ mState = state;
+ }
+
bool checkType_1_3_5_6_9() const {
return mType == CONNECTION_1 || mType == CONNECTION_3 || mType == CONNECTION_5 || mType == CONNECTION_6 ||
mType == CONNECTION_9;
@@ -87,8 +91,8 @@ public:
return field_0xA0->getArrowOffsetPosAndAngle(param_1, param_2, param_3, param_4, param_5);
}
- dAcBase_c *getControllingActor() {
- return static_cast<dAcBase_c *>(mControllingActor.p_owner);
+ dAcObjBase_c *getControllingActor() {
+ return (dAcObjBase_c *)(mControllingActor.p_owner);
}
void setField_0x8C_0x90(f32 f0, f32 f1) {
diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h
index 4f614842..e2257692 100644
--- a/include/d/d_player_act.h
+++ b/include/d/d_player_act.h
@@ -236,7 +236,7 @@ public:
return mPositionCopy3;
}
/* vt 0x1A8 */ virtual f32 vt_0x1A8() {
- return mYOffset;
+ return mSinkDepth;
}
/* vt 0x1AC */ virtual f32 vt_0x1AC() {
return 0.0f;
diff --git a/include/d/d_shadow.h b/include/d/d_shadow.h
index 902f2e6a..009bf821 100644
--- a/include/d/d_shadow.h
+++ b/include/d/d_shadow.h
@@ -1,14 +1,29 @@
#ifndef D_SHADOW_H
#define D_SHADOW_H
+#include "d/d_light_env.h"
#include "m/m3d/m_shadow.h"
+#include "m/m3d/m_smdl.h"
+#include "m/m_mtx.h"
+#include "m/m_sphere.h"
+#include "rvl/GX/GXTexture.h"
+
+class dAcObjBase_c;
// This is unofficial, idk if this is close, but this is a common shadow extension.
-//
class dShadowCircle_c : public m3d::mShadowCircle_c {
public:
dShadowCircle_c() {}
virtual ~dShadowCircle_c() {}
+
+ bool drawMdl(
+ m3d::smdl_c &mdl, const mSphere_c &sph, ActorLighting &actorLighting, u32 priority, s32 alpha, dAcObjBase_c *,
+ f32 height
+ );
+ bool drawTexObj(
+ const GXTexObj *pTex, const mMtx_c &mtx, const mSphere_c &sph, ActorLighting &actorLighting, u32 priority,
+ s32 alpha, s32 red, s32 green, s32 blue, dAcObjBase_c *, f32 height
+ );
};
#endif