diff options
| author | hatal175 <hatal175@users.noreply.github.com> | 2025-12-29 14:12:01 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-29 04:12:01 -0800 |
| commit | e77f841d351a2623490acdf0913eaf8f97f844d2 (patch) | |
| tree | 7e1b0b2f04f945cb053899eef9fbf2041e212c41 /src/SSystem/SComponent/c_m3d.cpp | |
| parent | 1f391dc5bde660c21b4f9d5cf942049f94c6ac2e (diff) | |
Work on d_cc_d debug (#3002)
Diffstat (limited to 'src/SSystem/SComponent/c_m3d.cpp')
| -rw-r--r-- | src/SSystem/SComponent/c_m3d.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/SSystem/SComponent/c_m3d.cpp b/src/SSystem/SComponent/c_m3d.cpp index 726ceeeedf..1af53e81e3 100644 --- a/src/SSystem/SComponent/c_m3d.cpp +++ b/src/SSystem/SComponent/c_m3d.cpp @@ -1978,6 +1978,47 @@ void cM3d_CalcVecZAngle(Vec const& param_0, csXyz* param_1) { param_1->z = 0; } +#ifdef DEBUG + +bool cM3d_UpMtx_Base(const Vec& param_1, const Vec& param_2, Mtx param_3) { + Vec local_3c; + Vec auStack_48; + f32 dVar8; + f32 angle; + + if (cM3d_IsZero(PSVECMag(¶m_2))) { + MTXIdentity(param_3); + return false; + } + + PSVECNormalize(¶m_2, &auStack_48); + PSVECCrossProduct(¶m_1, &auStack_48, &local_3c); + + if (cM3d_IsZero(PSVECMag(&local_3c))) { + local_3c.x = 1.0f; + local_3c.y = 0.0f; + local_3c.z = 0.0f; + } + + dVar8 = PSVECDotProduct(¶m_1, &auStack_48); + if (dVar8 > 1.0f) { + dVar8 = 1.0f; + } else if (dVar8 < -1.0f) { + dVar8 = -1.0f; + } + + angle = acosf(dVar8); + C_MTXRotAxisRad(param_3, &local_3c, angle); + return true; +} + +static Vec base_y = {0.0f, 1.0f, 0.0f}; + +bool cM3d_UpMtx(const Vec& param_1, Mtx param_2) { + return cM3d_UpMtx_Base(base_y, param_1, param_2); +} + +#endif void cM3d_PlaneCrossLineProcWork(f32 f1, f32 f2, f32 f3, f32 f4, f32 f5, f32 f6, f32 f7, f32* pF1, f32* pF2) { |
