diff --git a/Plugins/CaptionMod/exportfuncs.cpp b/Plugins/CaptionMod/exportfuncs.cpp index 26430cb6..63506e78 100644 --- a/Plugins/CaptionMod/exportfuncs.cpp +++ b/Plugins/CaptionMod/exportfuncs.cpp @@ -333,7 +333,6 @@ void HUD_Init(void) gPrivateFuncs.MessageMode_f = g_pMetaHookAPI->HookCmd("messagemode", MessageMode_f); gPrivateFuncs.MessageMode2_f = g_pMetaHookAPI->HookCmd("messagemode2", MessageMode2_f); - //Fix SvClient Portal Rendering Confliction if (g_bIsSvenCoop) { gPrivateFuncs.fmodex = GetModuleHandleA("fmodex.dll"); diff --git a/Plugins/Renderer/gl_rmain.cpp b/Plugins/Renderer/gl_rmain.cpp index 2022296e..e0cd8f2d 100644 --- a/Plugins/Renderer/gl_rmain.cpp +++ b/Plugins/Renderer/gl_rmain.cpp @@ -2387,9 +2387,7 @@ void R_ForceCVars(qboolean mp) void R_AddReferencedTextures(std::set &textures) { - int i; - - for (i = 0; i < EngineGetNumKnownModel(); ++i) + for (int i = 0; i < EngineGetNumKnownModel(); ++i) { auto mod = EngineGetModelByIndex(i); @@ -2448,6 +2446,29 @@ void R_UnloadNoreferenceTextures(const std::set& textures) } } +void R_UnloadNoreferenceModels() +{ + for (int i = 0; i < EngineGetNumKnownModel(); ++i) + { + auto mod = EngineGetModelByIndex(i); + + if (mod && (mod->needload == NL_UNREFERENCED)) + { + if (mod->type == mod_studio) + { + auto studiohdr = (studiohdr_t*)Cache_Check(&mod->cache); + + if (studiohdr) + { + gEngfuncs.Con_DPrintf("R_UnloadNoreferenceModel: [mdl] [%s].\n", mod->name); + + Cache_Free(&mod->cache); + } + } + } + } +} + void R_NewMap(void) { R_GenerateSceneUBO(); @@ -2476,6 +2497,7 @@ void R_NewMap(void) std::set textures; R_AddReferencedTextures(textures); R_UnloadNoreferenceTextures(textures); + R_UnloadNoreferenceModels(); } (*r_framecount) = 1;