diff options
| author | robojumper <robojumper@gmail.com> | 2025-05-19 00:27:07 +0200 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2025-05-19 21:52:55 +0200 |
| commit | 7f3dbef3224de96d0aebc61d0842677a8eca6f15 (patch) | |
| tree | abdb5f0764071c6505f3d62f59794c11963eb50a /src/m | |
| parent | bb6fd66745a19426066f4c664fc0972634d09462 (diff) | |
More
Diffstat (limited to 'src/m')
| -rw-r--r-- | src/m/m3d/m_bmdl.cpp | 2 | ||||
| -rw-r--r-- | src/m/m3d/m_shadow.cpp | 28 |
2 files changed, 13 insertions, 17 deletions
diff --git a/src/m/m3d/m_bmdl.cpp b/src/m/m3d/m_bmdl.cpp index 916d6440..2515e856 100644 --- a/src/m/m3d/m_bmdl.cpp +++ b/src/m/m3d/m_bmdl.cpp @@ -39,7 +39,7 @@ bool bmdl_c::getNodeWorldMtxMultVecZero(u32 p1, nw4r::math::VEC3 &out) const { } } -bool bmdl_c::getNodeWorldMtxMultVec(u32 p1, nw4r::math::VEC3 &in, nw4r::math::VEC3 &out) const { +bool bmdl_c::getNodeWorldMtxMultVec(u32 p1, const nw4r::math::VEC3 &in, nw4r::math::VEC3 &out) const { nw4r::math::MTX34 mtx; if (!getNodeWorldMtx(p1, &mtx)) { return false; diff --git a/src/m/m3d/m_shadow.cpp b/src/m/m3d/m_shadow.cpp index 903ca14f..da0246ef 100644 --- a/src/m/m3d/m_shadow.cpp +++ b/src/m/m3d/m_shadow.cpp @@ -514,17 +514,14 @@ bool mShadowChild_c::setGeom(const GXTexObj *texObj, const mMtx_c &mtx, const mQ } void mShadowChild_c::updateMtx() { - const mQuat_c &q = GetQuat(); - const mVec3_c &pos = GetPosition(); + // NONMATCHING + field_0x13C = mQuat.w; - Set0x13C(q.w); - - mVec3_c a(q.v); - - a += pos * GetOffset(); - - mVec3_c b(q.v); - b -= pos * Get0x13C(); + mVec3_c a(mQuat.v.x, mQuat.v.y, mQuat.v.z); + a += mPositionMaybe * GetOffset(); + + mVec3_c b(mQuat.v.x, mQuat.v.y, mQuat.v.z); + b -= mPositionMaybe * field_0x13C; const mVec3_c *up; if (cM::isZero((a - b).squareMagXZ())) { @@ -536,17 +533,16 @@ void mShadowChild_c::updateMtx() { mMtx_c mtx; C_MTXLookAt(mtx.m, a, *up, b); - const f32 f = Get0x13C(); + f32 f = field_0x13C; mFrustum.set(f, -f, -f, f, f, f + GetOffset(), mtx, true); } void mShadowChild_c::drawMdl() { - // Equivalent, but stack problems and regswaps using namespace nw4r; - mMtx_c mtx; + Mtx44 mtx; GXSetTevColor(GX_TEVREG0, sColors[mColorChanIdx]); - C_MTXOrtho(mtx.m, field_0x13C, -field_0x13C, -field_0x13C, field_0x13C, 0.0f, 100.0f + (-mFrustum.mFar)); - GXSetProjection(mtx.m, GX_ORTHOGRAPHIC); + C_MTXOrtho(mtx, field_0x13C, -field_0x13C, -field_0x13C, field_0x13C, 0.0f, 100.0f + (-mFrustum.mFar)); + GXSetProjection(mtx, GX_ORTHOGRAPHIC); g3d::G3DState::Invalidate(0x7FF); mMtx_c &viewMtx = mFrustum.mView; @@ -571,7 +567,7 @@ void mShadowChild_c::drawMdl() { g3d::DrawResMdlReplacement *pRep = mdl2 ? &mdl2->GetDrawResMdlReplacement() : nullptr; g3d::DrawResMdlDirectly( - resMdl, viewPosArray, nullptr, nullptr, mdl2->GetByteCode(g3d::ScnMdlSimple::BYTE_CODE_DRAW_OPA), + resMdl, viewPosArray, nullptr, nullptr, mdl->GetByteCode(g3d::ScnMdlSimple::BYTE_CODE_DRAW_OPA), nullptr, pRep, g3d::RESMDL_DRAWMODE_FORCE_LIGHTOFF | g3d::RESMDL_DRAWMODE_IGNORE_MATERIAL ); GXInvalidateVtxCache(); |
