From 137dba66e353d7e1470e68d94fd599e408ba166a Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Fri, 28 Jun 2024 07:28:16 -0700 Subject: [PATCH] m_Do_ext line match --- src/m_Do/m_Do_ext.cpp | 130 +++++++++++++++++++++++++++++------------- 1 file changed, 89 insertions(+), 41 deletions(-) diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index f2f96a0a6..508d54a40 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -1943,12 +1943,17 @@ void mDoExt_3DlineMat0_c::draw() { /* 800148B4-80014E04 .text update__19mDoExt_3DlineMat0_cFUsfR8_GXColorUsP12dKy_tevstr_c */ void mDoExt_3DlineMat0_c::update(u16 segs, f32 size, GXColor& newColor, u16 space, dKy_tevstr_c* pTevStr) { - /* Nonmatching */ cXyz eyeDelta; cXyz delta; cXyz nextP0; cXyz nextP1; + mDoExt_3Dline_c* line; + u32 posArrSize; + cXyz* pos; + cXyz* r_dstPos; + cXyz* dstPos; + mColor = newColor; mpTevStr = pTevStr; mNumSegments = segs; @@ -1956,7 +1961,7 @@ void mDoExt_3DlineMat0_c::update(u16 segs, f32 size, GXColor& newColor, u16 spac mNumSegments = mMaxSegments; view_class* view = dComIfGd_getView(); - mDoExt_3Dline_c* line = mpLines; + line = mpLines; f32 spacing; if (space != 0) { @@ -1965,11 +1970,11 @@ void mDoExt_3DlineMat0_c::update(u16 segs, f32 size, GXColor& newColor, u16 spac spacing = 0.0f; } - u32 posArrSize = mNumSegments * 2 * sizeof(cXyz); + posArrSize = mNumSegments * 2 * sizeof(cXyz); for (s32 i = 0; i < mNumLines; i++) { - cXyz* pos = line->mpSegments; - cXyz* dstPos = line->mPosArr[mCurArr]; + pos = line->mpSegments; + dstPos = line->mPosArr[mCurArr]; f32 r_size = size; delta = pos[1] - pos[0]; @@ -1977,15 +1982,18 @@ void mDoExt_3DlineMat0_c::update(u16 segs, f32 size, GXColor& newColor, u16 spac eyeDelta = pos[0] - view->mLookat.mEye; delta = delta.outprod(eyeDelta); f32 scale = delta.abs(); - if (scale != 0.0f) + if (scale != 0.0f) { scale = size / scale; - VECScale(&delta, &delta, scale); + VECScale(&delta, &delta, scale); + } dstPos[0] = pos[0] + delta; dstPos[1] = pos[0] - delta; + r_dstPos = dstPos; + r_dstPos += 2; + pos++; - cXyz* r_dstPos = &dstPos[2]; nextP0 = pos[0] + delta; nextP1 = pos[0] - delta; @@ -2030,12 +2038,18 @@ void mDoExt_3DlineMat0_c::update(u16 segs, f32 size, GXColor& newColor, u16 spac /* 80014E04-80015328 .text update__19mDoExt_3DlineMat0_cFUsR8_GXColorP12dKy_tevstr_c */ void mDoExt_3DlineMat0_c::update(u16 segs, GXColor& newColor, dKy_tevstr_c* pTevStr) { - /* Nonmatching */ cXyz eyeDelta; cXyz delta; cXyz nextP0; cXyz nextP1; + mDoExt_3Dline_c* line; + u32 posArrSize; + cXyz* pos; + cXyz* r_dstPos; + cXyz* dstPos; + u8* size_p; + mColor = newColor; mpTevStr = pTevStr; mNumSegments = segs; @@ -2043,32 +2057,36 @@ void mDoExt_3DlineMat0_c::update(u16 segs, GXColor& newColor, dKy_tevstr_c* pTev mNumSegments = mMaxSegments; view_class* view = dComIfGd_getView(); - mDoExt_3Dline_c* line = mpLines; + line = mpLines; - u32 posArrSize = mNumSegments * 2 * sizeof(cXyz); + posArrSize = mNumSegments * 2 * sizeof(cXyz); for (s32 i = 0; i < mNumLines; i++) { - cXyz* pos = line->mpSegments; + pos = line->mpSegments; - u8* size_p = line->mpSize; - JUT_ASSERT(5243, size_p != NULL); + size_p = line->mpSize; + JUT_ASSERT(4738, size_p != NULL); - cXyz* dstPos = line->mPosArr[mCurArr]; + dstPos = line->mPosArr[mCurArr]; delta = pos[1] - pos[0]; eyeDelta = pos[0] - view->mLookat.mEye; delta = delta.outprod(eyeDelta); f32 scale = delta.abs(); - if (scale != 0.0f) + if (scale != 0.0f) { scale = *size_p / scale; - VECScale(&delta, &delta, scale); + VECScale(&delta, &delta, scale); + } dstPos[0] = pos[0] + delta; dstPos[1] = pos[0] - delta; + r_dstPos = dstPos; + r_dstPos += 2; + pos++; - cXyz* r_dstPos = &dstPos[2]; + size_p++; nextP0 = pos[0] + delta; nextP1 = pos[0] - delta; @@ -2198,12 +2216,20 @@ void mDoExt_3DlineMat1_c::draw() { /* 80015764-80015E54 .text update__19mDoExt_3DlineMat1_cFUsfR8_GXColorUsP12dKy_tevstr_c */ void mDoExt_3DlineMat1_c::update(u16 segs, f32 size, GXColor& newColor, u16 space, dKy_tevstr_c* pTevStr) { - /* Nonmatching */ cXyz eyeDelta; cXyz delta; cXyz nextP0; cXyz nextP1; + mDoExt_3Dline_c* line; + u32 posArrSize; + u32 texArrSize; + cXyz* pos; + cXyz* r_dstPos; + cXyz* dstPos; + cXy* r_dstTex; + cXy* dstTex; + mColor = newColor; mpTevStr = pTevStr; mNumSegments = segs; @@ -2211,7 +2237,7 @@ void mDoExt_3DlineMat1_c::update(u16 segs, f32 size, GXColor& newColor, u16 spac mNumSegments = mMaxSegments; view_class* view = dComIfGd_getView(); - mDoExt_3Dline_c* line = mpLines; + line = mpLines; f32 spacing; if (space != 0) { @@ -2220,20 +2246,24 @@ void mDoExt_3DlineMat1_c::update(u16 segs, f32 size, GXColor& newColor, u16 spac spacing = 0.0f; } - u32 posArrSize = mNumSegments * 2 * sizeof(cXyz); - u32 texArrSize = mNumSegments * 2 * sizeof(cXy); + posArrSize = mNumSegments * 2 * sizeof(cXyz); + texArrSize = mNumSegments * 2 * sizeof(cXy); + f32 r_size; f32 dist = 0.0f; for (s32 i = 0; i < mNumLines; i++) { - cXyz* pos = line->mpSegments; + pos = line->mpSegments; - cXyz* dstPos = line->mPosArr[mCurArr]; - cXy* dstTex = line->mTexArr[mCurArr]; - f32 r_size = size; + dstPos = line->mPosArr[mCurArr]; + dstTex = line->mTexArr[mCurArr]; + r_size = size; dstTex[0].y = dist; dstTex[1].y = dist; + r_dstTex = dstTex; + r_dstTex += 2; + delta = pos[1] - pos[0]; f32 mag = delta.abs(); @@ -2241,16 +2271,18 @@ void mDoExt_3DlineMat1_c::update(u16 segs, f32 size, GXColor& newColor, u16 spac eyeDelta = pos[0] - view->mLookat.mEye; delta = delta.outprod(eyeDelta); f32 scale = delta.abs(); - if (scale != 0.0f) + if (scale != 0.0f) { scale = size / scale; - VECScale(&delta, &delta, scale); + VECScale(&delta, &delta, scale); + } dstPos[0] = pos[0] + delta; dstPos[1] = pos[0] - delta; + r_dstPos = dstPos; + r_dstPos += 2; + pos++; - cXyz* r_dstPos = &dstPos[2]; - cXy* r_dstTex = &dstTex[1]; nextP0 = pos[0] + delta; nextP1 = pos[0] - delta; @@ -2311,6 +2343,16 @@ void mDoExt_3DlineMat1_c::update(u16 segs, GXColor& newColor, dKy_tevstr_c* pTev cXyz nextP0; cXyz nextP1; + mDoExt_3Dline_c* line; + u32 posArrSize; + u32 texArrSize; + cXyz* pos; + cXyz* r_dstPos; + cXyz* dstPos; + cXy* r_dstTex; + cXy* dstTex; + u8* size_p; + mColor = newColor; mpTevStr = pTevStr; mNumSegments = segs; @@ -2318,24 +2360,27 @@ void mDoExt_3DlineMat1_c::update(u16 segs, GXColor& newColor, dKy_tevstr_c* pTev mNumSegments = mMaxSegments; view_class* view = dComIfGd_getView(); - mDoExt_3Dline_c* line = mpLines; + line = mpLines; - u32 posArrSize = mNumSegments * 2 * sizeof(cXyz); - u32 texArrSize = mNumSegments * 2 * sizeof(cXy); + posArrSize = mNumSegments * 2 * sizeof(cXyz); + texArrSize = mNumSegments * 2 * sizeof(cXy); f32 dist = 0.0f; for (s32 i = 0; i < mNumLines; i++) { - cXyz* pos = line->mpSegments; + pos = line->mpSegments; - u8* size_p = line->mpSize; + size_p = line->mpSize; JUT_ASSERT(5243, size_p != NULL); - cXyz* dstPos = line->mPosArr[mCurArr]; - cXy* dstTex = line->mTexArr[mCurArr]; + dstPos = line->mPosArr[mCurArr]; + dstTex = line->mTexArr[mCurArr]; dstTex[0].y = dist; dstTex[1].y = dist; + r_dstTex = dstTex; + r_dstTex += 2; + delta = pos[1] - pos[0]; f32 mag = delta.abs(); @@ -2343,16 +2388,19 @@ void mDoExt_3DlineMat1_c::update(u16 segs, GXColor& newColor, dKy_tevstr_c* pTev eyeDelta = pos[0] - view->mLookat.mEye; delta = delta.outprod(eyeDelta); f32 scale = delta.abs(); - if (scale != 0.0f) + if (scale != 0.0f) { scale = *size_p / scale; - VECScale(&delta, &delta, scale); + VECScale(&delta, &delta, scale); + } dstPos[0] = pos[0] + delta; dstPos[1] = pos[0] - delta; + r_dstPos = dstPos; + r_dstPos += 2; + size_p++; + pos++; - cXyz* r_dstPos = &dstPos[2]; - cXy* r_dstTex = &dstTex[1]; nextP0 = pos[0] + delta; nextP1 = pos[0] - delta;