Skip to content

Commit 15f1e52

Browse files
committed
Reduce TXD load memory before import
1 parent bb7e811 commit 15f1e52

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

Client/mods/deathmatch/logic/CClientTXD.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,15 @@ bool CClientTXD::LoadFromFile(SString filePath)
158158
if (!GetFilenameToUse(strUseFilename))
159159
return false;
160160

161-
return g_pGame->GetRenderWare()->ModelInfoTXDLoadTextures(&m_ReplacementTextures, strUseFilename, SString(), m_bFilteringEnabled);
161+
// engineLoadTXD only needs to validate the TXD and create an element.
162+
// Keep decoded textures out of memory until engineImportTXD applies them.
163+
if (!g_pGame->GetRenderWare()->ModelInfoTXDLoadTextures(&m_ReplacementTextures, strUseFilename, SString(), m_bFilteringEnabled))
164+
return false;
165+
166+
g_pGame->GetRenderWare()->ModelInfoTXDRemoveTextures(&m_ReplacementTextures);
167+
m_ReplacementTextures = SReplacementTextures();
168+
169+
return true;
162170
}
163171

164172
bool CClientTXD::LoadFromBuffer(SString buffer)
@@ -168,7 +176,15 @@ bool CClientTXD::LoadFromBuffer(SString buffer)
168176

169177
m_FileData = std::move(buffer);
170178

171-
return g_pGame->GetRenderWare()->ModelInfoTXDLoadTextures(&m_ReplacementTextures, NULL, m_FileData, m_bFilteringEnabled);
179+
// Raw-data TXDs may still need the original bytes for clothes streaming, so keep m_FileData.
180+
// Keep decoded textures out of memory until engineImportTXD applies them.
181+
if (!g_pGame->GetRenderWare()->ModelInfoTXDLoadTextures(&m_ReplacementTextures, NULL, m_FileData, m_bFilteringEnabled))
182+
return false;
183+
184+
g_pGame->GetRenderWare()->ModelInfoTXDRemoveTextures(&m_ReplacementTextures);
185+
m_ReplacementTextures = SReplacementTextures();
186+
187+
return true;
172188
}
173189

174190
void CClientTXD::Restream(unsigned short usModelID)

0 commit comments

Comments
 (0)