From 27400658955d1abf7b5e331d2d2adc38a2410c08 Mon Sep 17 00:00:00 2001 From: MS Date: Sat, 14 Feb 2026 20:16:23 -0500 Subject: [PATCH] Beta match `SpheresIntersect` (#1745) * Beta match SpheresIntersect * Extra beta addresses --- LEGO1/lego/legoomni/src/common/legoutils.cpp | 4 +++- LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp | 3 +++ LEGO1/lego/sources/3dmanager/lego3dview.h | 1 + LEGO1/library_msvc.h | 6 ++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/LEGO1/lego/legoomni/src/common/legoutils.cpp b/LEGO1/lego/legoomni/src/common/legoutils.cpp index dc310953..7d37af7f 100644 --- a/LEGO1/lego/legoomni/src/common/legoutils.cpp +++ b/LEGO1/lego/legoomni/src/common/legoutils.cpp @@ -90,11 +90,13 @@ void RotateY(LegoROI* p_roi, MxFloat p_angle) } // FUNCTION: LEGO1 0x1003de80 +// FUNCTION: BETA10 0x100d3684 MxBool SpheresIntersect(const BoundingSphere& p_sphere1, const BoundingSphere& p_sphere2) { // This doesn't look clean, but it matches. // p_sphere1.Center().GetData() doesn't work out - return sqrt(DISTSQRD3(&p_sphere1.Center()[0], &p_sphere2.Center()[0])) < p_sphere1.Radius() + p_sphere2.Radius(); + float distance = DISTSQRD3(p_sphere1.Center(), p_sphere2.Center()); + return sqrt(distance) < p_sphere1.Radius() + p_sphere2.Radius(); } // FUNCTION: LEGO1 0x1003ded0 diff --git a/LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp b/LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp index c15b4aac..c5fbf72b 100644 --- a/LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp +++ b/LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp @@ -186,6 +186,7 @@ void LegoCameraController::TransformPointOfView(const Matrix4& p_transform, MxU3 } // FUNCTION: LEGO1 0x10012740 +// FUNCTION: BETA10 0x10069c35 Mx3DPointFloat LegoCameraController::GetWorldUp() { if (m_lego3DView && m_lego3DView->GetPointOfView()) { @@ -199,6 +200,7 @@ Mx3DPointFloat LegoCameraController::GetWorldUp() } // FUNCTION: LEGO1 0x100127f0 +// FUNCTION: BETA10 0x10069cea Mx3DPointFloat LegoCameraController::GetWorldLocation() { if (m_lego3DView && m_lego3DView->GetPointOfView()) { @@ -212,6 +214,7 @@ Mx3DPointFloat LegoCameraController::GetWorldLocation() } // FUNCTION: LEGO1 0x100128a0 +// FUNCTION: BETA10 0x10069daa Mx3DPointFloat LegoCameraController::GetWorldDirection() { if (m_lego3DView && m_lego3DView->GetPointOfView()) { diff --git a/LEGO1/lego/sources/3dmanager/lego3dview.h b/LEGO1/lego/sources/3dmanager/lego3dview.h index 1f878a53..44187337 100644 --- a/LEGO1/lego/sources/3dmanager/lego3dview.h +++ b/LEGO1/lego/sources/3dmanager/lego3dview.h @@ -52,6 +52,7 @@ inline ViewManager* Lego3DView::GetViewManager() return m_pViewManager; } +// FUNCTION: BETA10 0x1006aae0 inline ViewROI* Lego3DView::GetPointOfView() { return m_pPointOfView; diff --git a/LEGO1/library_msvc.h b/LEGO1/library_msvc.h index fd185a53..9e38a1d9 100644 --- a/LEGO1/library_msvc.h +++ b/LEGO1/library_msvc.h @@ -873,6 +873,12 @@ // LIBRARY: BETA10 0x100fa0e0 // atof +// LIBRARY: BETA10 0x1005a500 +// sqrt + +// LIBRARY: BETA10 0x1005a530 +// sqrtf + // LIBRARY: BETA10 0x1005a9c0 // fabs