From 975580403105111ae321611f54f2d2fb27368231 Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Sun, 7 Jan 2024 02:57:54 +0100 Subject: [PATCH] DataCache: rework FindUncachedMDL error handling Remove unnecessary/duplicate code. --- r5dev/datacache/mdlcache.cpp | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/r5dev/datacache/mdlcache.cpp b/r5dev/datacache/mdlcache.cpp index a787a4fc..032e33af 100644 --- a/r5dev/datacache/mdlcache.cpp +++ b/r5dev/datacache/mdlcache.cpp @@ -156,9 +156,18 @@ studiohdr_t* CMDLCache::FindUncachedMDL(CMDLCache* const cache, const MDLHandle_ g_pRTech->StringToGuid(modelName); pStudioData->processing = false; - if (!pStudioData->modelCache) + studiomodelcache_t* const modelCache = pStudioData->GetModelCache(); + + if (IS_VALID_DATACACHE_HANDLE(modelCache)) { + FindCachedMDL(cache, pStudioData, a4); + studioHdr = modelCache->GetStudioHdr(); + } + else + { + // Attempt to get studio header from anim cache. studioanimcache_t* const animCache = pStudioData->GetAnimCache(); + if (IS_VALID_DATACACHE_HANDLE(animCache)) { studioHdr = animCache->GetStudioHdr(); @@ -166,6 +175,7 @@ studiohdr_t* CMDLCache::FindUncachedMDL(CMDLCache* const cache, const MDLHandle_ else { studioHdr = GetErrorModel(); + if (!IsKnownBadModel(handle)) { if (!studioHdr) @@ -173,30 +183,6 @@ studiohdr_t* CMDLCache::FindUncachedMDL(CMDLCache* const cache, const MDLHandle_ else Error(eDLL_T::ENGINE, NO_ERROR, "Model \"%s\" not found; replacing with \"%s\".\n", modelName, ERROR_MODEL); } - - return studioHdr; - } - } - else - { - FindCachedMDL(cache, pStudioData, a4); - studiomodelcache_t* const modelCache = pStudioData->GetModelCache(); - - if (IS_VALID_DATACACHE_HANDLE(modelCache)) - { - studioHdr = GetErrorModel(); - - if (!IsKnownBadModel(handle)) - { - if (!studioHdr) - Error(eDLL_T::ENGINE, EXIT_FAILURE, "Model \"%s\" has invalid studio data and \"%s\" couldn't be loaded.\n", modelName, ERROR_MODEL); - else - Error(eDLL_T::ENGINE, NO_ERROR, "Model \"%s\" has invalid studio data; replacing with \"%s\".\n", modelName, ERROR_MODEL); - } - } - else - { - studioHdr = modelCache->GetStudioHdr(); } }