From da45be6eb5e60a231a2f8a944b0dce9d822c098a Mon Sep 17 00:00:00 2001 From: samisalreadytaken <46823719+samisalreadytaken@users.noreply.github.com> Date: Wed, 20 Nov 2024 17:09:13 +0300 Subject: [PATCH] Fix ScriptGetAttachmentMatrix/Angles --- sp/src/game/client/c_baseanimating.cpp | 25 +++++++++++-------------- sp/src/game/client/c_baseanimating.h | 4 ++-- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/sp/src/game/client/c_baseanimating.cpp b/sp/src/game/client/c_baseanimating.cpp index edde6282..7e63a6bb 100644 --- a/sp/src/game/client/c_baseanimating.cpp +++ b/sp/src/game/client/c_baseanimating.cpp @@ -1531,35 +1531,32 @@ float C_BaseAnimating::ClampCycle( float flCycle, bool isLooping ) //----------------------------------------------------------------------------- const Vector& C_BaseAnimating::ScriptGetAttachmentOrigin( int iAttachment ) { - static Vector absOrigin; - static QAngle qa; + QAngle qa; C_BaseAnimating::GetAttachment( iAttachment, absOrigin, qa ); return absOrigin; } -const Vector& C_BaseAnimating::ScriptGetAttachmentAngles( int iAttachment ) +const QAngle& C_BaseAnimating::ScriptGetAttachmentAngles( int iAttachment ) { - - static Vector absOrigin; - static Vector absAngles; static QAngle qa; + Vector absOrigin; C_BaseAnimating::GetAttachment( iAttachment, absOrigin, qa ); - absAngles.x = qa.x; - absAngles.y = qa.y; - absAngles.z = qa.z; - return absAngles; + return qa; } -HSCRIPT C_BaseAnimating::ScriptGetAttachmentMatrix( int iAttachment ) +HSCRIPT_RC C_BaseAnimating::ScriptGetAttachmentMatrix( int iAttachment ) { - static matrix3x4_t matrix; + matrix3x4_t *matrix = new matrix3x4_t; - C_BaseAnimating::GetAttachment( iAttachment, matrix ); - return g_pScriptVM->RegisterInstance( &matrix ); + if ( C_BaseAnimating::GetAttachment( iAttachment, *matrix ) ) + return g_pScriptVM->RegisterInstance( matrix, true ); + + delete matrix; + return NULL; } void C_BaseAnimating::ScriptGetBoneTransform( int iBone, HSCRIPT hTransform ) diff --git a/sp/src/game/client/c_baseanimating.h b/sp/src/game/client/c_baseanimating.h index 24e33a3b..25dbfb33 100644 --- a/sp/src/game/client/c_baseanimating.h +++ b/sp/src/game/client/c_baseanimating.h @@ -464,8 +464,8 @@ public: #ifdef MAPBASE_VSCRIPT int ScriptLookupAttachment( const char *pAttachmentName ) { return LookupAttachment( pAttachmentName ); } const Vector& ScriptGetAttachmentOrigin(int iAttachment); - const Vector& ScriptGetAttachmentAngles(int iAttachment); - HSCRIPT ScriptGetAttachmentMatrix(int iAttachment); + const QAngle& ScriptGetAttachmentAngles(int iAttachment); + HSCRIPT_RC ScriptGetAttachmentMatrix(int iAttachment); void ScriptGetBoneTransform( int iBone, HSCRIPT hTransform ); void ScriptSetBoneTransform( int iBone, HSCRIPT hTransform );