From 03c99f845b9c496b09357bf4b5efa6fae50f6ca5 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Mon, 14 Jul 2025 08:08:22 -0500 Subject: [PATCH] fix crash with unclean exit for player, if we're unmounting because we're being deleted, don't bother animating for tsthreads in general, not much point in removing the threadlist, then checking if it's scaled --- Engine/source/T3D/player.cpp | 4 +++- Engine/source/ts/tsThread.cpp | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Engine/source/T3D/player.cpp b/Engine/source/T3D/player.cpp index ac7ae447d..5722844b7 100644 --- a/Engine/source/T3D/player.cpp +++ b/Engine/source/T3D/player.cpp @@ -4604,10 +4604,12 @@ void Player::onUnmount( SceneObject *obj, S32 node ) void Player::unmount() { + // Reset back to root position during dismount. This copies what is // done on the server and corrects the fact that the RootAnim change // is not sent across to the client using the standard ActionMask. - setActionThread(PlayerData::RootAnim,true,false,false); + if (!isRemoved()) + setActionThread(PlayerData::RootAnim,true,false,false); Parent::unmount(); } diff --git a/Engine/source/ts/tsThread.cpp b/Engine/source/ts/tsThread.cpp index 4cb1088d9..29a890038 100644 --- a/Engine/source/ts/tsThread.cpp +++ b/Engine/source/ts/tsThread.cpp @@ -534,7 +534,6 @@ void TSShapeInstance::destroyThread(TSThread * thread) delete mThreadList[i]; mThreadList.erase(i); setDirty(AllDirtyMask); - checkScaleCurrentlyAnimated(); } U32 TSShapeInstance::threadCount()