mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-20 23:01: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: |
|
||||
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 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
|
||||
shell: bash
|
||||
|
||||
@ -216,10 +216,67 @@ LegoS32 LegoWEGEdge::VTable0x04()
|
||||
return result;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1009aea0
|
||||
// STUB: BETA10 0x10183e2a
|
||||
// FUNCTION: LEGO1 0x1009aea0
|
||||
// FUNCTION: BETA10 0x10183e2a
|
||||
LegoS32 LegoWEGEdge::FUN_1009aea0()
|
||||
{
|
||||
// TODO
|
||||
return -1;
|
||||
LegoU32 localc = FALSE;
|
||||
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