mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-21 07:11:16 +00:00
Implement/match LegoWEGEdge::FUN_1009aea0
This commit is contained in:
parent
af7262f9a4
commit
c4467e2c17
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -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
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user