Fix up a shadow-related variable/parameter names (#920)

* Fix up a shadow-related variable/parameter names

* Fix compilation errors in d_a_obj_barrel.cpp
This commit is contained in:
Mike Lester
2026-01-12 23:01:35 -07:00
committed by GitHub
parent ba4a7b481c
commit 9cc61c4058
11 changed files with 145 additions and 132 deletions
+1 -1
View File
@@ -25,7 +25,7 @@ namespace daObjBarrel {
struct Attr_c {
/* 0x00 */ u16 mBdlIdx;
/* 0x02 */ u8 m02;
/* 0x02 */ u8 mShadowSize;
/* 0x03 */ bool mEnableCutoff;
/* 0x04 */ float mAttnH;
/* 0x08 */ float mNormalGravity;
+2 -2
View File
@@ -2253,7 +2253,7 @@ public:
/* 0x35D0 */ f32 m35D0;
/* 0x35D4 */ f32 m35D4;
/* 0x35D8 */ f32 m35D8;
/* 0x35DC */ f32 m35DC;
/* 0x35DC */ f32 mHangGroundH;
/* 0x35E0 */ f32 m35E0;
/* 0x35E4 */ f32 m35E4;
/* 0x35E8 */ f32 m35E8;
@@ -2267,7 +2267,7 @@ public:
/* 0x3608 */ f32 m3608;
/* 0x360C */ f32 mSeAnmRate;
/* 0x3610 */ f32 m3610;
/* 0x3614 */ int m3614;
/* 0x3614 */ int mShadowId;
/* 0x3618 */ u32 mModeFlg;
/* 0x361C */ u32 mMtrlSndId;
/* 0x3620 */ u32 m3620;
+1 -1
View File
@@ -58,7 +58,7 @@ namespace daStone {
/* 0x78 */ u32 m78;
/* 0x7C */ u16 m7C;
/* 0x7E */ u8 m7E;
/* 0x80 */ s16 m80;
/* 0x80 */ s16 shadowScaleXZ;
/* 0x82 */ s16 m82;
/* 0x84 */ s16 m84;
/* 0x86 */ s16 m86;
+15 -15
View File
@@ -3445,31 +3445,31 @@ stage_arrow_class* dComIfGp_getRoomArrow(int i_roomNo);
* === DRAWLIST ===
*/
int dComIfGd_setShadow(u32 id, s8 param_2, J3DModel* pModel, cXyz* pPos, f32 param_5, f32 param_6,
f32 y, f32 param_8, cBgS_PolyInfo& pFloorPoly, dKy_tevstr_c* param_10,
s16 rotY = 0, f32 param_12 = 1.0f,
int dComIfGd_setShadow(u32 id, s8 shouldFade, J3DModel* pModel, cXyz* pPos, f32 casterSize, f32 scaleXZ,
f32 y, f32 groundY, cBgS_PolyInfo& pFloorPoly, dKy_tevstr_c* pTevStr,
s16 rotY = 0, f32 scaleZ = 1.0f,
GXTexObj* pTexObj = dDlst_shadowControl_c::getSimpleTex());
inline int dComIfGd_setSimpleShadow(cXyz* i_pos, f32 groundY, f32 param_2, cXyz* floor_nrm,
s16 i_angle = 0, f32 param_5 = 1.0f,
inline int dComIfGd_setSimpleShadow(cXyz* i_pos, f32 groundY, f32 scaleXZ, cXyz* floor_nrm,
s16 i_angle = 0, f32 scaleZ = 1.0f,
GXTexObj* i_tex = dDlst_shadowControl_c::getSimpleTex()) {
return g_dComIfG_gameInfo.drawlist.setSimpleShadow(i_pos, groundY, param_2, floor_nrm, i_angle,
param_5, i_tex);
return g_dComIfG_gameInfo.drawlist.setSimpleShadow(i_pos, groundY, scaleXZ, floor_nrm, i_angle,
scaleZ, i_tex);
}
int dComIfGd_setSimpleShadow2(cXyz* i_pos, f32 param_1, f32 param_2, cBgS_PolyInfo& i_floorPoly,
s16 i_angle = 0, f32 param_5 = 1.0f,
int dComIfGd_setSimpleShadow2(cXyz* i_pos, f32 groundY, f32 scaleXZ, cBgS_PolyInfo& i_floorPoly,
s16 i_angle = 0, f32 scaleZ = 1.0f,
GXTexObj* i_tex = dDlst_shadowControl_c::getSimpleTex());
inline int dComIfGd_setRealShadow(u32 id, s8 param_2, J3DModel* pModel, cXyz* pPos, f32 param_5,
f32 param_6, dKy_tevstr_c* pTevStr) {
return g_dComIfG_gameInfo.drawlist.setRealShadow(id, param_2, pModel, pPos, param_5, param_6,
inline int dComIfGd_setRealShadow(u32 id, s8 shouldFade, J3DModel* pModel, cXyz* pPos, f32 casterSize,
f32 heightAboveGround, dKy_tevstr_c* pTevStr) {
return g_dComIfG_gameInfo.drawlist.setRealShadow(id, shouldFade, pModel, pPos, casterSize, heightAboveGround,
pTevStr);
}
inline int dComIfGd_setRealShadow2(u32 id, s8 param_2, J3DModel* pModel, cXyz* pPos, f32 param_5,
f32 param_6, dKy_tevstr_c* pTevStr) {
return g_dComIfG_gameInfo.drawlist.setRealShadow2(id, param_2, pModel, pPos, param_5, param_6,
inline int dComIfGd_setRealShadow2(u32 id, s8 shouldFade, J3DModel* pModel, cXyz* pPos, f32 casterSize,
f32 heightAboveGround, dKy_tevstr_c* pTevStr) {
return g_dComIfG_gameInfo.drawlist.setRealShadow2(id, shouldFade, pModel, pPos, casterSize, heightAboveGround,
pTevStr);
}
+7 -7
View File
@@ -580,18 +580,18 @@ public:
void drawXluListInvisible() { drawXluDrawList(mpXluListInvisible); }
void drawOpaList2D() { drawOpaDrawList(mpOpaList2D); }
int setSimpleShadow(cXyz* i_pos, f32 groundY, f32 param_2, cXyz* floor_nrm, s16 i_angle,
f32 param_5, GXTexObj* i_tex) {
return mShadowControl.setSimple(i_pos, groundY, param_2, floor_nrm, i_angle, param_5,
int setSimpleShadow(cXyz* i_pos, f32 groundY, f32 scaleXZ, cXyz* floor_nrm, s16 i_angle,
f32 scaleZ, GXTexObj* i_tex) {
return mShadowControl.setSimple(i_pos, groundY, scaleXZ, floor_nrm, i_angle, scaleZ,
i_tex);
}
int setRealShadow(u32 id, s8 param_2, J3DModel* pModel, cXyz* pPos, f32 param_5, f32 param_6,
int setRealShadow(u32 id, s8 shouldFade, J3DModel* pModel, cXyz* pPos, f32 casterSize, f32 heightAboveGround,
dKy_tevstr_c* pTevStr) {
return mShadowControl.setReal(id, param_2, pModel, pPos, param_5, param_6, pTevStr);
return mShadowControl.setReal(id, shouldFade, pModel, pPos, casterSize, heightAboveGround, pTevStr);
}
int setRealShadow2(u32 id, s8 param_2, J3DModel* pModel, cXyz* pPos, f32 param_5, f32 param_6,
int setRealShadow2(u32 id, s8 shouldFade, J3DModel* pModel, cXyz* pPos, f32 casterSize, f32 heightAboveGround,
dKy_tevstr_c* pTevStr) {
return mShadowControl.setReal2(id, param_2, pModel, pPos, param_5, param_6, pTevStr);
return mShadowControl.setReal2(id, shouldFade, pModel, pPos, casterSize, heightAboveGround, pTevStr);
}
bool addRealShadow(u32 id, J3DModel* pModel) {
return mShadowControl.addReal(id, pModel);
+2 -2
View File
@@ -59,7 +59,7 @@ const dCcD_SrcCyl daObjBarrel::Act_c::M_cyl_src = {
const daObjBarrel::Act_c::Attr_c daObjBarrel::Act_c::M_attr = {
/* mBdlIdx */ KTARU_01_BDL_KTARU_01,
/* m02 */ 60,
/* mShadowSize */ 60,
/* mEnableCutoff */ false,
/* mAttnH */ 50.0f,
/* mNormalGravity */ -6.0f,
@@ -727,7 +727,7 @@ bool daObjBarrel::Act_c::_draw() {
cM3dGPla* gndPlane = dComIfG_Bgsp()->GetTriPla(mAcch.m_gnd);
cXyz *norm = gndPlane->GetNP();
if (norm && gndH != -G_CM3D_F_INF) {
dComIfGd_setSimpleShadow(&current.pos, gndH, attr().m02, norm);
dComIfGd_setSimpleShadow(&current.pos, gndH, attr().mShadowSize, norm);
}
}
return true;
+4 -4
View File
@@ -113,13 +113,13 @@ int daPy_lk_c::changeHangEndProc(int param_0) {
pos.z = pMVar6[2][3] - cM_scos(shape_angle.y) * 4.0f;
mGndChk.SetPos(&pos);
m35DC = dComIfG_Bgsp()->GroundCross(&mGndChk);
if (-G_CM3D_F_INF != m35DC) {
mHangGroundH = dComIfG_Bgsp()->GroundCross(&mGndChk);
if (-G_CM3D_F_INF != mHangGroundH) {
m3588 = dComIfG_Bgsp()->GetAttributeCode(mGndChk);
} else {
m3588 = dBgS_Attr_UNK1B_e;
}
if (m35DC > mFootData[1].field_0x018.y + current.pos.y) {
if (mHangGroundH > mFootData[1].field_0x018.y + current.pos.y) {
return procLand_init(m_HIO->mAutoJump.m.field_0x24, 0);
}
if (param_0 != 0) {
@@ -215,7 +215,7 @@ BOOL daPy_lk_c::procHangStart_init() {
mVelocity = 0.0f;
speed.y = 0.0f;
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK100_e);
m35DC = mAcch.GetGroundH();
mHangGroundH = mAcch.GetGroundH();
return true;
}
+10 -10
View File
@@ -1584,7 +1584,7 @@ void daPy_lk_c::drawShadow() {
}
f32 f31;
if (checkModeFlg(ModeFlg_HANG)) {
f31 = m35DC;
f31 = mHangGroundH;
} else {
f31 = mAcch.GetGroundH();
}
@@ -1596,13 +1596,13 @@ void daPy_lk_c::drawShadow() {
} else {
f1 = m_HIO->mBasic.m.field_0x10;
}
int iVar4 = dComIfGd_setShadow(m3614, 0, mpCLModel, &local_30, f1, 30.0f, current.pos.y,
int iVar4 = dComIfGd_setShadow(mShadowId, 0, mpCLModel, &local_30, f1, 30.0f, current.pos.y,
f31, mAcch.m_gnd, &tevStr, 0, 1.0f,
&dDlst_shadowControl_c::mSimpleTexObj);
m3614 = iVar4;
if ((u32)m3614 != 0) {
mShadowId = iVar4;
if ((u32)mShadowId != 0) {
if (checkNoResetFlg1(daPyFlg1_CASUAL_CLOTHES) && !checkCaughtShapeHide()) {
dComIfGd_addRealShadow(m3614, mpKatsuraModel);
dComIfGd_addRealShadow(mShadowId, mpKatsuraModel);
}
if (checkSwordEquip()
#if VERSION == VERSION_DEMO
@@ -1611,7 +1611,7 @@ void daPy_lk_c::drawShadow() {
&& !checkDemoSwordNoDraw(1)
#endif
) {
dComIfGd_addRealShadow(m3614, mpEquippedSwordModel);
dComIfGd_addRealShadow(mShadowId, mpEquippedSwordModel);
}
if ((mpEquipItemModel != NULL
#if VERSION == VERSION_DEMO
@@ -1622,7 +1622,7 @@ void daPy_lk_c::drawShadow() {
) &&
(!checkBowItem(mEquipItem) || !checkPlayerGuard()))
{
dComIfGd_addRealShadow(m3614, mpEquipItemModel);
dComIfGd_addRealShadow(mShadowId, mpEquipItemModel);
}
if (dComIfGs_getSelectEquip(1) != dItem_NONE_e
#if VERSION == VERSION_DEMO
@@ -1631,18 +1631,18 @@ void daPy_lk_c::drawShadow() {
&& !checkDemoShieldNoDraw()
#endif
) {
dComIfGd_addRealShadow(m3614, mpEquippedShieldModel);
dComIfGd_addRealShadow(mShadowId, mpEquippedShieldModel);
}
fopAc_ac_c* pfVar10;
if (mActorKeepGrab.getID() != fpcM_ERROR_PROCESS_ID_e) {
pfVar10 = fopAcM_SearchByID(mActorKeepGrab.getID());
if (pfVar10 != NULL && fopAcM_GetModel(pfVar10) != NULL) {
dComIfGd_addRealShadow(m3614, fopAcM_GetModel(pfVar10));
dComIfGd_addRealShadow(mShadowId, fopAcM_GetModel(pfVar10));
}
} else if (mActorKeepEquip.getID() != fpcM_ERROR_PROCESS_ID_e) {
pfVar10 = fopAcM_SearchByID(mActorKeepEquip.getID());
if (pfVar10 != NULL && fopAcM_GetModel(pfVar10) != NULL) {
dComIfGd_addRealShadow(m3614, fopAcM_GetModel(pfVar10));
dComIfGd_addRealShadow(mShadowId, fopAcM_GetModel(pfVar10));
}
}
}
+1 -1
View File
@@ -969,7 +969,7 @@ bool Act_c::_draw() {
g_env_light.setLightTevColorType(mpModel, &tevStr);
mDoExt_modelUpdateDL(mpModel);
if (fopAcM_GetModel(this) == NULL) {
dComIfGd_setSimpleShadow2(&current.pos, mAcch.GetGroundH(), data().m80, mAcch.m_gnd);
dComIfGd_setSimpleShadow2(&current.pos, mAcch.GetGroundH(), data().shadowScaleXZ, mAcch.m_gnd);
}
}
return true;
+8 -8
View File
@@ -563,13 +563,13 @@ s8 dComIfGp_getReverb(int param_0) {
}
/* 800534C4-800535B8 .text dComIfGd_setSimpleShadow2__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj */
int dComIfGd_setSimpleShadow2(cXyz* i_pos, f32 groundY, f32 param_2, cBgS_PolyInfo& i_floorPoly,
s16 i_angle, f32 param_5, GXTexObj* i_tex) {
int dComIfGd_setSimpleShadow2(cXyz* i_pos, f32 groundY, f32 scaleXZ, cBgS_PolyInfo& i_floorPoly,
s16 i_angle, f32 scaleZ, GXTexObj* i_tex) {
if (i_floorPoly.ChkSetInfo() && -G_CM3D_F_INF != groundY) {
cM3dGPla* plane_p =
dComIfG_Bgsp()->GetTriPla(i_floorPoly);
return dComIfGd_setSimpleShadow(i_pos, groundY, param_2, plane_p->GetNP(), i_angle, param_5, i_tex);
return dComIfGd_setSimpleShadow(i_pos, groundY, scaleXZ, plane_p->GetNP(), i_angle, scaleZ, i_tex);
} else {
return 0;
}
@@ -1041,17 +1041,17 @@ u8 dComIfGs_checkGetItemNum(u8 i_itemNo) {
}
/* 80054578-8005468C .text dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj */
int dComIfGd_setShadow(u32 id, s8 param_2, J3DModel* pModel, cXyz* pPos, f32 param_5, f32 param_6,
f32 y, f32 groundY, cBgS_PolyInfo& pFloorPoly, dKy_tevstr_c* param_10,
s16 rotY, f32 param_12, GXTexObj* pTexObj) {
int dComIfGd_setShadow(u32 id, s8 shouldFade, J3DModel* pModel, cXyz* pPos, f32 casterSize, f32 scaleXZ,
f32 y, f32 groundY, cBgS_PolyInfo& pFloorPoly, dKy_tevstr_c* pTevStr,
s16 rotY, f32 scaleZ, GXTexObj* pTexObj) {
if (groundY <= -G_CM3D_F_INF) {
return 0;
}
int sid = dComIfGd_setRealShadow2(id, param_2, pModel, pPos, param_5, y - groundY, param_10);
int sid = dComIfGd_setRealShadow2(id, shouldFade, pModel, pPos, casterSize, y - groundY, pTevStr);
if (sid == 0) {
cXyz pos(pPos->x, y, pPos->z);
dComIfGd_setSimpleShadow2(&pos, groundY, param_6, pFloorPoly, rotY, param_12, pTexObj);
dComIfGd_setSimpleShadow2(&pos, groundY, scaleXZ, pFloorPoly, rotY, scaleZ, pTexObj);
}
return sid;
}
+94 -81
View File
@@ -1427,118 +1427,131 @@ void seaRealCallBack(void* user, cXyz& v0, cXyz& v1, cXyz& v2) {
}
/* 80083E18-800840B0 .text realPolygonCheck__FP4cXyzffP4cXyzP18dDlst_shadowPoly_c */
BOOL realPolygonCheck(cXyz* param_0, f32 param_1, f32 param_2, cXyz* param_3, dDlst_shadowPoly_c* param_4) {
BOOL realPolygonCheck(cXyz* param_0, f32 casterRadius, f32 heightAgl, cXyz* lightDir, dDlst_shadowPoly_c* shadowPoly) {
ShdwDrawPoly_c shdwDrawPoly;
cXyz local_8c;
cXyz local_98;
f32 tmp1 = param_1 * param_1 * 0.002f;
// Compute a bounding box around the shadow receiver based on its position, size, and light direction
cXyz bbMin;
cXyz bbMax;
f32 tmp1 = casterRadius * casterRadius * 0.002f;
f32 tmp2 = cLib_maxLimit(tmp1, 120.0f);
f32 var1 = param_1 + param_2 - tmp2;
local_8c.y = param_0->y - var1;
local_98.y = param_0->y + param_1 * 0.4f;
local_98.x = param_0->x + param_3->x * var1;
if (local_98.x < param_0->x) {
local_8c.x = local_98.x;
local_98.x = param_0->x;
f32 var1 = casterRadius + heightAgl - tmp2;
bbMin.y = param_0->y - var1;
bbMax.y = param_0->y + casterRadius * 0.4f;
bbMax.x = param_0->x + lightDir->x * var1;
if (bbMax.x < param_0->x) {
bbMin.x = bbMax.x;
bbMax.x = param_0->x;
} else {
local_8c.x = param_0->x;
bbMin.x = param_0->x;
}
local_8c.x -= param_1;
local_98.x += param_1;
var1 = param_0->z + param_3->z * var1;
local_98.z = var1;
bbMin.x -= casterRadius;
bbMax.x += casterRadius;
var1 = param_0->z + lightDir->z * var1;
bbMax.z = var1;
if (var1 < param_0->z) {
local_8c.z = local_98.z;
local_98.z = param_0->z;
bbMin.z = bbMax.z;
bbMax.z = param_0->z;
} else {
local_8c.z = param_0->z;
bbMin.z = param_0->z;
}
local_8c.z -= param_1;
local_98.z += param_1;
bbMin.z -= casterRadius;
bbMax.z += casterRadius;
mDoLib_clipper::changeFar(mDoLib_clipper::getFovyRate() * 3000.0f);
s32 clip = mDoLib_clipper::clip(j3dSys.getViewMtx(), &local_98, &local_8c);
s32 clip = mDoLib_clipper::clip(j3dSys.getViewMtx(), &bbMax, &bbMin);
mDoLib_clipper::resetFar();
if (clip) {
return FALSE;
}
shdwDrawPoly.Set(local_8c, local_98);
// Gather a list of polygons from the bg geometry (dBgS) or the sea (daSea) that will act as shadow receivers
// ShdwDrawPoly_c is a transient object for collecting the triangles, which are stored permanently in dDlst_shadowPoly_c
shdwDrawPoly.Set(bbMin, bbMax);
shdwDrawPoly.SetCallback(psdRealCallBack);
shdwDrawPoly.setCenter(param_0);
shdwDrawPoly.setLightVec(param_3);
shdwDrawPoly.setPoly(param_4);
shdwDrawPoly.setLightVec(lightDir);
shdwDrawPoly.setPoly(shadowPoly);
dComIfG_Bgsp()->ShdwDraw(&shdwDrawPoly);
daSea_GetPoly(&shdwDrawPoly, seaRealCallBack, local_8c, local_98);
daSea_GetPoly(&shdwDrawPoly, seaRealCallBack, bbMin, bbMax);
return TRUE;
}
/* 800841B0-8008450C .text setShadowRealMtx__FPA4_fPA4_fPA4_fP4cXyzP4cXyzffP18dDlst_shadowPoly_cf */
u8 setShadowRealMtx(Mtx r26, Mtx r27, Mtx r28, cXyz* r6, cXyz* r29, f32 f30, f32 f31, dDlst_shadowPoly_c* r30, f32 f3) {
r30->reset();
if (f3 >= 1.0f) {
u8 setShadowRealMtx(Mtx viewMtx, Mtx renderProjMtx, Mtx receiverProjMtx, cXyz* lightPos, cXyz* pos, f32 casterSize, f32 heightAgl, dDlst_shadowPoly_c* shadowPoly, f32 heightFade) {
shadowPoly->reset();
if (heightFade >= 1.0f) {
return 0;
}
f32 f1 = 1.0f - f3;
if (f1 > 1.0f) {
f1 = 1.0f;
f32 opacity = 1.0f - heightFade;
if (opacity > 1.0f) {
opacity = 1.0f;
}
int r31 = 200.0f * f1;
cXyz local_64 = *r6 - *r29;
local_64.y += f31;
f32 tmp = 0.02f * (50.0f - f31);
int alpha = 200.0f * opacity;
cXyz lightVec = *lightPos - *pos;
// The higher off the ground a shadow caster is, the weaker the shadow's horizontal components become
// This cheats the light vec to be more vertical when the caster is high up, a la platforming drop shadows
// At 50 units above ground, the shadow is fully vertical
lightVec.y += heightAgl;
f32 tmp = 0.02f * (50.0f - heightAgl);
if (tmp < 0.0f) {
local_64.x = 0.0f;
local_64.z = 0.0f;
lightVec.x = 0.0f;
lightVec.z = 0.0f;
} else if (tmp < 1.0f) {
local_64.x *= tmp;
local_64.z *= tmp;
lightVec.x *= tmp;
lightVec.z *= tmp;
}
f32 tmp2 = std::sqrtf(local_64.abs2());
if (tmp2 != 0.0f) {
f32 tmp3 = (local_64.y / tmp2);
f32 lightDist = std::sqrtf(lightVec.abs2());
if (lightDist != 0.0f) {
f32 tmp3 = (lightVec.y / lightDist);
if (tmp3 < 1.5f) {
local_64.y = 1.5f * tmp2;
tmp2 = local_64.abs2();
tmp2 = std::sqrtf(tmp2);
lightVec.y = 1.5f * lightDist;
lightDist = lightVec.abs2();
lightDist = std::sqrtf(lightDist);
}
tmp2 = (f30 * 0.5f) / tmp2;
lightDist = (casterSize * 0.5f) / lightDist;
}
local_64 *= tmp2;
local_64 += *r29;
f32 f29 = f30 * 0.4f;
cXyz local_70 = *r29 - local_64;
if (local_70.isZero()) {
local_70.y = -1.0f;
local_64.y = r29->y + 1.0f;
lightVec *= lightDist;
lightVec += *pos;
f32 casterRadius = casterSize * 0.4f;
cXyz rayDir = *pos - lightVec;
if (rayDir.isZero()) {
rayDir.y = -1.0f;
lightVec.y = pos->y + 1.0f;
} else {
local_70.normalize();
rayDir.normalize();
}
if (!realPolygonCheck(r29, f29, f31, &local_70, r30)) {
if (!realPolygonCheck(pos, casterRadius, heightAgl, &rayDir, shadowPoly)) {
return 0;
}
cMtx_lookAt(r26, &local_64, r29, 0);
C_MTXOrtho(r27, f29, -f29, -f29, f29, 1.0f, 10000.0f);
C_MTXLightOrtho(r28, f29, -f29, -f29, f29, 0.5f, -0.5f, 0.5f, 0.5f);
cMtx_concat(r28, r26, r28);
return r31;
cMtx_lookAt(viewMtx, &lightVec, pos, 0);
C_MTXOrtho(renderProjMtx, casterRadius, -casterRadius, -casterRadius, casterRadius, 1.0f, 10000.0f);
C_MTXLightOrtho(receiverProjMtx, casterRadius, -casterRadius, -casterRadius, casterRadius, 0.5f, -0.5f, 0.5f, 0.5f);
cMtx_concat(receiverProjMtx, viewMtx, receiverProjMtx);
return alpha;
}
/* 8008450C-800846C8 .text set__18dDlst_shadowReal_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c */
u32 dDlst_shadowReal_c::set(u32 key, s8 param_2, J3DModel* model, cXyz* param_4, f32 param_5, f32 param_6, dKy_tevstr_c* tevstr) {
u32 dDlst_shadowReal_c::set(u32 key, s8 shouldFade, J3DModel* model, cXyz* pos, f32 casterSize, f32 heightAboveGround, dKy_tevstr_c* tevstr) {
if (mState != 1 || key != mKey) {
cXyz lightPos = dKy_plight_near_pos();
if (tevstr) {
lightPos = tevstr->mLightPosWorld;
}
mAlpha = setShadowRealMtx(
mViewMtx, mRenderProjMtx, mReceiverProjMtx, &lightPos, param_4, param_5, param_6, &mShadowRealPoly,
param_2 == 0 ? 0.0f : param_6 * 0.0007f
mViewMtx, mRenderProjMtx, mReceiverProjMtx, &lightPos, pos, casterSize, heightAboveGround, &mShadowRealPoly,
shouldFade == 0 ? 0.0f : heightAboveGround * 0.0007f
);
if (mAlpha == 0) {
return 0;
}
mState = 1;
mKey = key;
field_0x1 = param_2;
field_0x1 = shouldFade;
mpDrawBuffer->setCallBackPacket(mpCallBack);
mModelNum = 0;
}
@@ -1558,22 +1571,22 @@ u32 dDlst_shadowReal_c::set(u32 key, s8 param_2, J3DModel* model, cXyz* param_4,
}
/* 800846C8-80084844 .text set2__18dDlst_shadowReal_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c */
u32 dDlst_shadowReal_c::set2(u32 key, s8 r27, J3DModel* model, cXyz* r28, f32 f30, f32 f31, dKy_tevstr_c* tevstr) {
u32 dDlst_shadowReal_c::set2(u32 key, s8 shouldFade, J3DModel* model, cXyz* pos, f32 casterSize, f32 heightAboveGround, dKy_tevstr_c* tevstr) {
if (mModelNum == 0) {
cXyz lightPos = dKy_plight_near_pos();
if (tevstr) {
lightPos = tevstr->mLightPosWorld;
}
mAlpha = setShadowRealMtx(
mViewMtx, mRenderProjMtx, mReceiverProjMtx, &lightPos, r28, f30, f31, &mShadowRealPoly,
r27 == 0 ? 0.0f : f31 * 0.00025f
mViewMtx, mRenderProjMtx, mReceiverProjMtx, &lightPos, pos, casterSize, heightAboveGround, &mShadowRealPoly,
shouldFade == 0 ? 0.0f : heightAboveGround * 0.00025f
);
if (mAlpha == 0) {
return 0;
}
mState = 1;
mKey = key;
field_0x1 = r27;
field_0x1 = shouldFade;
mModelNum = 0;
}
@@ -1645,11 +1658,11 @@ void dDlst_shadowSimple_c::draw() {
}
/* 80084AC8-80084D48 .text set__20dDlst_shadowSimple_cFP4cXyzffP4cXyzsfP9_GXTexObj */
void dDlst_shadowSimple_c::set(cXyz* pos, f32 y, f32 param_3, cXyz* floorNrm, s16 rotY, f32 param_6, GXTexObj* texObj) {
f32 offsetY = param_3 * 16.0f * (1.0f - floorNrm->y) + 1.0f;
void dDlst_shadowSimple_c::set(cXyz* pos, f32 y, f32 scaleXZ, cXyz* floorNrm, s16 rotY, f32 scaleZ, GXTexObj* texObj) {
f32 offsetY = scaleXZ * 16.0f * (1.0f - floorNrm->y) + 1.0f;
mDoMtx_stack_c::transS(pos->x, y + offsetY, pos->z);
mDoMtx_stack_c::YrotM(rotY);
mDoMtx_stack_c::scaleM(param_3, offsetY + offsetY + 16.0f, param_3 * param_6);
mDoMtx_stack_c::scaleM(scaleXZ, offsetY + offsetY + 16.0f, scaleXZ * scaleZ);
mDoMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), mVolumeMtx);
f32 xs = std::sqrtf(1.0f - floorNrm->x * floorNrm->x);
@@ -1679,7 +1692,7 @@ void dDlst_shadowSimple_c::set(cXyz* pos, f32 y, f32 param_3, cXyz* floorNrm, s1
mDoMtx_stack_c::get()[2][3] = pos->z;
mDoMtx_stack_c::YrotM(rotY);
mDoMtx_stack_c::scaleM(param_3, 1.0f, param_3 * param_6);
mDoMtx_stack_c::scaleM(scaleXZ, 1.0f, scaleXZ * scaleZ);
mDoMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), mMtx);
f32 dist = 1.0f - (pos->y - y) * 0.0007f;
if (dist < 0.0f)
@@ -1762,12 +1775,12 @@ void dDlst_shadowControl_c::draw(Mtx drawMtx) {
}
/* 800850D4-80085170 .text setReal__21dDlst_shadowControl_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c */
int dDlst_shadowControl_c::setReal(u32 key, s8 size, J3DModel* model, cXyz* pos, f32 f0, f32 f1, dKy_tevstr_c* tevstr) {
int dDlst_shadowControl_c::setReal(u32 key, s8 shouldFade, J3DModel* model, cXyz* pos, f32 casterSize, f32 heightAboveGround, dKy_tevstr_c* tevstr) {
if (key != 0) {
dDlst_shadowReal_c * real = &mReal[0];
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, real++) {
if (real->isUse() && real->checkKey(key)) {
return real->set(key, size, model, pos, f0, f1, tevstr);
return real->set(key, shouldFade, model, pos, casterSize, heightAboveGround, tevstr);
}
}
}
@@ -1776,7 +1789,7 @@ int dDlst_shadowControl_c::setReal(u32 key, s8 size, J3DModel* model, cXyz* pos,
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, real++) {
if (real->isNoUse()) {
while (++mNextID == 0) {}
return real->set(mNextID, size, model, pos, f0, f1, tevstr);
return real->set(mNextID, shouldFade, model, pos, casterSize, heightAboveGround, tevstr);
}
}
@@ -1784,12 +1797,12 @@ int dDlst_shadowControl_c::setReal(u32 key, s8 size, J3DModel* model, cXyz* pos,
}
/* 80085170-8008520C .text setReal2__21dDlst_shadowControl_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c */
int dDlst_shadowControl_c::setReal2(u32 key, s8 size, J3DModel* model, cXyz* pos, f32 f0, f32 f1, dKy_tevstr_c* tevstr) {
int dDlst_shadowControl_c::setReal2(u32 key, s8 shouldFade, J3DModel* model, cXyz* pos, f32 casterSize, f32 heightAboveGround, dKy_tevstr_c* tevstr) {
if (key != 0) {
dDlst_shadowReal_c * real = &mReal[0];
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, real++) {
if (real->isUse() && real->checkKey(key)) {
return real->set2(key, size, model, pos, f0, f1, tevstr);
return real->set2(key, shouldFade, model, pos, casterSize, heightAboveGround, tevstr);
}
}
}
@@ -1798,7 +1811,7 @@ int dDlst_shadowControl_c::setReal2(u32 key, s8 size, J3DModel* model, cXyz* pos
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, real++) {
if (real->isNoUse()) {
while (++mNextID == 0) {}
return real->set2(mNextID, size, model, pos, f0, f1, tevstr);
return real->set2(mNextID, shouldFade, model, pos, casterSize, heightAboveGround, tevstr);
}
}
@@ -1821,11 +1834,11 @@ bool dDlst_shadowControl_c::addReal(u32 key, J3DModel* model) {
}
/* 80085274-800852D8 .text setSimple__21dDlst_shadowControl_cFP4cXyzffP4cXyzsfP9_GXTexObj */
int dDlst_shadowControl_c::setSimple(cXyz* pos, f32 groundY, f32 f1, cXyz* floor_nrm, s16 rotY, f32 f2, GXTexObj* tex) {
int dDlst_shadowControl_c::setSimple(cXyz* pos, f32 groundY, f32 scaleXZ, cXyz* floor_nrm, s16 rotY, f32 scaleZ, GXTexObj* tex) {
if (floor_nrm == NULL || mSimpleNum >= ARRAY_SIZE(mSimple))
return false;
mSimple[mSimpleNum].set(pos, groundY, f1, floor_nrm, rotY, f2, tex);
mSimple[mSimpleNum].set(pos, groundY, scaleXZ, floor_nrm, rotY, scaleZ, tex);
mSimpleNum++;
return true;
}