diff --git a/r5dev/engine/debugoverlay.cpp b/r5dev/engine/debugoverlay.cpp index bce648bd..83e1604d 100644 --- a/r5dev/engine/debugoverlay.cpp +++ b/r5dev/engine/debugoverlay.cpp @@ -247,6 +247,8 @@ void DrawAIScriptNodes() #ifndef CLIENT_DLL if (*g_pAINetwork) { + OverlayBox_t::Transforms vTransforms; + for (int i = ai_script_nodes_draw_index->GetInt(); i < (*g_pAINetwork)->GetNumScriptNodes(); i++) { if (i < 0) @@ -254,12 +256,9 @@ void DrawAIScriptNodes() return; } - OverlayBox_t::Transforms vTransforms{}; /*!FIXME: using '__m128' without type cast shifts the stack with 0x10 despite being the same size!*/ - __m128* pTransforms = reinterpret_cast<__m128*>(&vTransforms.u0); - - pTransforms[0] = _mm_set_ps((*g_pAINetwork)->m_ScriptNode[i].m_vOrigin.x - 50.f, 0.0f, 0.0f, 1.0f); - pTransforms[1] = _mm_set_ps((*g_pAINetwork)->m_ScriptNode[i].m_vOrigin.y - 50.f, 0.0f, 1.0f, 0.0f); - pTransforms[2] = _mm_set_ps((*g_pAINetwork)->m_ScriptNode[i].m_vOrigin.z - 50.f, 1.0f, 0.0f, 0.0f); + vTransforms.xmm[0] = _mm_set_ps((*g_pAINetwork)->m_ScriptNode[i].m_vOrigin.x - 50.f, 0.0f, 0.0f, 1.0f); + vTransforms.xmm[1] = _mm_set_ps((*g_pAINetwork)->m_ScriptNode[i].m_vOrigin.y - 50.f, 0.0f, 1.0f, 0.0f); + vTransforms.xmm[2] = _mm_set_ps((*g_pAINetwork)->m_ScriptNode[i].m_vOrigin.z - 50.f, 1.0f, 0.0f, 0.0f); v_RenderBox(vTransforms, {0, 0, 0}, {100, 100, 100}, Color(0, 255, 0, 255), r_debug_overlay_zbuffer->GetBool()); diff --git a/r5dev/engine/debugoverlay.h b/r5dev/engine/debugoverlay.h index f62828a5..0d441370 100644 --- a/r5dev/engine/debugoverlay.h +++ b/r5dev/engine/debugoverlay.h @@ -1,6 +1,7 @@ #pragma once #include "mathlib/vector.h" #include "mathlib/color.h" +#include "mathlib/vector4d.h" // Something has to be hardcoded.. #if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) || defined (GAMEDLL_S2) @@ -73,12 +74,17 @@ struct OverlayBox_t : public OverlayBase_t struct Transforms { - Vector3D u0; - float x; - Vector3D u1; - float y; - Vector3D u2; - float z; + Transforms() + { + xmm[0] = _mm_setzero_ps(); + xmm[1] = _mm_setzero_ps(); + xmm[2] = _mm_setzero_ps(); + }; + union + { + __m128 xmm[3]; + Vector4D vec[3]; + }; }; Transforms transforms;