From 1d96b68e1a3ef3b16789741bffbde535e1005993 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sat, 20 Feb 2021 11:35:14 +0100 Subject: [PATCH] Fixed IsHUDModelForPlayerAvailable limitation. --- src/r_data/models.cpp | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/r_data/models.cpp b/src/r_data/models.cpp index 72b2c0f1ba..2d7c0eb2e9 100644 --- a/src/r_data/models.cpp +++ b/src/r_data/models.cpp @@ -777,20 +777,14 @@ FSpriteModelFrame * FindModelFrame(const PClass * ti, int sprite, int frame, boo bool IsHUDModelForPlayerAvailable (player_t * player) { - if (player == nullptr || player->ReadyWeapon == nullptr) + if (player == nullptr || player->psprites == nullptr) return false; - // [MK] allow the Strife burning hands to be a model... - DPSprite *psp = player->FindPSprite(PSP_STRIFEHANDS); - - // [MK] ...otherwise, check for the weapon psprite as per usual - if (psp == nullptr) - psp = player->FindPSprite(PSP_WEAPON); - - if (psp == nullptr) - return false; - - FSpriteModelFrame *smf = FindModelFrame(psp->Caller->GetClass(), psp->GetSprite(), psp->GetFrame(), false); - return ( smf != nullptr ); + // [MK] check that at least one psprite uses models + for (DPSprite *psp = player->psprites; psp != nullptr && psp->GetID() < PSP_TARGETCENTER; psp = psp->GetNext()) + { + FSpriteModelFrame *smf = FindModelFrame(psp->Caller->GetClass(), psp->GetSprite(), psp->GetFrame(), false); + if ( smf != nullptr ) return true; + } + return false; } -