Implement/match LegoWEGEdge::FUN_1009aea0

This commit is contained in:
Christian Semmler 2024-12-22 11:32:26 -07:00
parent af7262f9a4
commit c4467e2c17
2 changed files with 62 additions and 5 deletions

View File

@ -139,7 +139,7 @@ jobs:
run: | run: |
reccmp-reccmp -S CONFIGPROGRESS.SVG --svg-icon assets/config.png --target CONFIG | tee CONFIGPROGRESS.TXT reccmp-reccmp -S CONFIGPROGRESS.SVG --svg-icon assets/config.png --target CONFIG | tee CONFIGPROGRESS.TXT
reccmp-reccmp -S ISLEPROGRESS.SVG --svg-icon assets/isle.png --target ISLE | tee ISLEPROGRESS.TXT reccmp-reccmp -S ISLEPROGRESS.SVG --svg-icon assets/isle.png --target ISLE | tee ISLEPROGRESS.TXT
reccmp-reccmp -S LEGO1PROGRESS.SVG -T 4357 --svg-icon assets/lego1.png --target LEGO1 | tee LEGO1PROGRESS.TXT reccmp-reccmp -S LEGO1PROGRESS.SVG -T 4358 --svg-icon assets/lego1.png --target LEGO1 | tee LEGO1PROGRESS.TXT
- name: Compare Accuracy With Current Master - name: Compare Accuracy With Current Master
shell: bash shell: bash

View File

@ -216,10 +216,67 @@ LegoS32 LegoWEGEdge::VTable0x04()
return result; return result;
} }
// STUB: LEGO1 0x1009aea0 // FUNCTION: LEGO1 0x1009aea0
// STUB: BETA10 0x10183e2a // FUNCTION: BETA10 0x10183e2a
LegoS32 LegoWEGEdge::FUN_1009aea0() LegoS32 LegoWEGEdge::FUN_1009aea0()
{ {
// TODO LegoU32 localc = FALSE;
return -1; Mx3DPointFloat local24;
if (m_numEdges < 3) {
return -1;
}
Vector3** local8 = new Vector3*[m_numEdges];
LegoS32 i;
for (i = 0; i < m_numEdges; i++) {
local8[i] = m_edges[i]->CWVertex(*this);
}
for (i = 2; i < m_numEdges; i++) {
Mx3DPointFloat local3c;
Mx3DPointFloat local50;
float local28 = 0.0f;
local3c = *local8[i];
local3c -= *local8[i - 1];
local50 = *local8[i - 2];
local50 -= *local8[i - 1];
local24.EqualsCross(&local50, &local3c);
local28 = local24.LenSquared();
if (local28 < 0.00001f) {
continue;
}
float local58 = sqrt((double) local28);
local24 /= local58;
if (localc) {
float local54 = local24.Dot(&m_unk0x14, &local24);
if (local54 < 0.98) {
delete[] local8;
return -2;
}
}
else {
m_unk0x14[0] = local24[0];
m_unk0x14[1] = local24[1];
m_unk0x14[2] = local24[2];
m_unk0x14[3] = -local8[i]->Dot(local8[i], &local24);
localc = TRUE;
}
}
if (local8 != NULL) {
delete[] local8;
}
if (!localc) {
return -1;
}
return 0;
} }