mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-20 05:37:03 -04:00
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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(¤t.pos, gndH, attr().m02, norm);
|
||||
dComIfGd_setSimpleShadow(¤t.pos, gndH, attr().mShadowSize, norm);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -969,7 +969,7 @@ bool Act_c::_draw() {
|
||||
g_env_light.setLightTevColorType(mpModel, &tevStr);
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
if (fopAcM_GetModel(this) == NULL) {
|
||||
dComIfGd_setSimpleShadow2(¤t.pos, mAcch.GetGroundH(), data().m80, mAcch.m_gnd);
|
||||
dComIfGd_setSimpleShadow2(¤t.pos, mAcch.GetGroundH(), data().shadowScaleXZ, mAcch.m_gnd);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user