Skip to content

Commit c667e2a

Browse files
committed
Fix model replacement for unstreamed models
1 parent 05c639c commit c667e2a

File tree

1 file changed

+24
-26
lines changed

1 file changed

+24
-26
lines changed

Client/game_sa/CModelInfoSA.cpp

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,38 +1196,36 @@ bool CModelInfoSA::SetCustomModel(RpClump* pClump)
11961196
if (!pClump)
11971197
return false;
11981198

1199-
// Replace the model if we're loaded.
1200-
bool success = false;
1201-
1202-
if (IsLoaded())
1199+
if (!IsLoaded())
12031200
{
1204-
switch (GetModelType())
1205-
{
1206-
case eModelInfoType::PED:
1207-
success = pGame->GetRenderWare()->ReplacePedModel(pClump, static_cast<unsigned short>(m_dwModelID));
1208-
break;
1209-
case eModelInfoType::WEAPON:
1210-
success = pGame->GetRenderWare()->ReplaceWeaponModel(pClump, static_cast<unsigned short>(m_dwModelID));
1211-
break;
1212-
case eModelInfoType::VEHICLE:
1213-
success = pGame->GetRenderWare()->ReplaceVehicleModel(pClump, static_cast<unsigned short>(m_dwModelID));
1214-
break;
1215-
case eModelInfoType::ATOMIC:
1216-
case eModelInfoType::LOD_ATOMIC:
1217-
case eModelInfoType::TIME:
1218-
success = pGame->GetRenderWare()->ReplaceAllAtomicsInModel(pClump, static_cast<unsigned short>(m_dwModelID));
1219-
break;
1220-
default:
1221-
break;
1222-
}
1201+
// Wait for the game to eventually stream-in the model and then try to replace it (via MakeCustomModel).
1202+
m_pCustomClump = pClump;
1203+
return true;
12231204
}
12241205

1225-
if (success)
1206+
bool success = false;
1207+
1208+
switch (GetModelType())
12261209
{
1227-
// Store the custom clump
1228-
m_pCustomClump = pClump;
1210+
case eModelInfoType::PED:
1211+
success = pGame->GetRenderWare()->ReplacePedModel(pClump, static_cast<unsigned short>(m_dwModelID));
1212+
break;
1213+
case eModelInfoType::WEAPON:
1214+
success = pGame->GetRenderWare()->ReplaceWeaponModel(pClump, static_cast<unsigned short>(m_dwModelID));
1215+
break;
1216+
case eModelInfoType::VEHICLE:
1217+
success = pGame->GetRenderWare()->ReplaceVehicleModel(pClump, static_cast<unsigned short>(m_dwModelID));
1218+
break;
1219+
case eModelInfoType::ATOMIC:
1220+
case eModelInfoType::LOD_ATOMIC:
1221+
case eModelInfoType::TIME:
1222+
success = pGame->GetRenderWare()->ReplaceAllAtomicsInModel(pClump, static_cast<unsigned short>(m_dwModelID));
1223+
break;
1224+
default:
1225+
break;
12291226
}
12301227

1228+
m_pCustomClump = success ? pClump : nullptr;
12311229
return success;
12321230
}
12331231

0 commit comments

Comments
 (0)