From c7da29db4891233438840608c5e476b2329cf641 Mon Sep 17 00:00:00 2001 From: Joey <45763358+JoeyCheerio@users.noreply.github.com> Date: Fri, 26 Dec 2025 05:02:36 -0500 Subject: [PATCH 1/2] [TF2] Fixes Beach Ball going Invisible when shot at This patch fixes the beach ball/Smissmas ornament ball from going invisible by preventing invalid numbers from being used in the math. If invalid numbers are used (for example 0) it catches it and changes it to 1 --- src/public/jigglebones.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/public/jigglebones.cpp b/src/public/jigglebones.cpp index 176bf723746..7ba2f727ce5 100644 --- a/src/public/jigglebones.cpp +++ b/src/public/jigglebones.cpp @@ -674,7 +674,10 @@ void CJiggleBones::BuildJiggleTransformations( int boneIndex, float currenttime, boingSide = CrossProduct( data->boingDir, Vector( 0, 0, 1.0f ) ); } boingSide.NormalizeInPlace(); - + + if (data->boingDir.IsZero()) data->boingDir = Vector(0, 0, 1); + if (boingSide.IsZero()) boingSide = Vector(1, 0, 0); + Vector boingOtherSide = CrossProduct( data->boingDir, boingSide ); matrix3x4_t xfrmToBoingCoordsMX; From 6e5dca27810ede16de1f0397e9f75b46353ccebf Mon Sep 17 00:00:00 2001 From: Joey <45763358+JoeyCheerio@users.noreply.github.com> Date: Fri, 26 Dec 2025 17:20:34 -0500 Subject: [PATCH 2/2] Update jigglebones.cpp Included Ficool's better fix --- src/public/jigglebones.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/public/jigglebones.cpp b/src/public/jigglebones.cpp index 7ba2f727ce5..7a3bfcc861c 100644 --- a/src/public/jigglebones.cpp +++ b/src/public/jigglebones.cpp @@ -588,14 +588,15 @@ void CJiggleBones::BuildJiggleTransformations( int boneIndex, float currenttime, data->lastBoingPos = goalBasePosition; - float speed = vel.NormalizeInPlace(); - if ( speed < 0.00001f ) + float speed; + if ( vel.IsZero() ) { vel = Vector( 0, 0, 1.0f ); speed = 0.0f; } else { + speed = vel.NormalizeInPlace(); speed /= deltaT; } @@ -675,9 +676,6 @@ void CJiggleBones::BuildJiggleTransformations( int boneIndex, float currenttime, } boingSide.NormalizeInPlace(); - if (data->boingDir.IsZero()) data->boingDir = Vector(0, 0, 1); - if (boingSide.IsZero()) boingSide = Vector(1, 0, 0); - Vector boingOtherSide = CrossProduct( data->boingDir, boingSide ); matrix3x4_t xfrmToBoingCoordsMX;