@@ -1538,7 +1538,12 @@ void CModelInfoSA::RestoreOriginalModel()
15381538 CBaseModelInfoSAInterface* currentInterface = ppModelInfo[m_dwModelID];
15391539 ppModelInfo[m_dwModelID] = MapGet (m_convertedModelInterfaces, m_dwModelID);
15401540
1541- delete currentInterface;
1541+ if (currentInterface)
1542+ {
1543+ ppModelInfo[m_dwModelID]->usNumberOfRefs = currentInterface->usNumberOfRefs ;
1544+ delete currentInterface;
1545+ }
1546+
15421547 MapRemove (m_convertedModelInterfaces, m_dwModelID);
15431548 }
15441549
@@ -1814,13 +1819,13 @@ void CModelInfoSA::MakeClumpModel(ushort usBaseID)
18141819bool CModelInfoSA::ConvertToClump ()
18151820{
18161821 // Get current interface
1817- CAtomicModelInfoSAInterface* currentAtomicInterface = static_cast <CAtomicModelInfoSAInterface*>( ppModelInfo[m_dwModelID]) ;
1818- if (!currentAtomicInterface )
1822+ CBaseModelInfoSAInterface* currentModelInterface = ppModelInfo[m_dwModelID];
1823+ if (!currentModelInterface )
18191824 return false ;
18201825
18211826 // Create new clump interface
18221827 CClumpModelInfoSAInterface* newClumpInterface = new CClumpModelInfoSAInterface ();
1823- MemCpyFast (newClumpInterface, currentAtomicInterface , sizeof (CClumpModelInfoSAInterface ));
1828+ MemCpyFast (newClumpInterface, currentModelInterface , sizeof (CBaseModelInfoSAInterface ));
18241829 newClumpInterface->m_nAnimFileIndex = -1 ;
18251830
18261831 // (FileEX): We do not destroy or set pRwObject to nullptr here
@@ -1834,7 +1839,7 @@ bool CModelInfoSA::ConvertToClump()
18341839 ppModelInfo[m_dwModelID] = newClumpInterface;
18351840
18361841 // Store original interface
1837- MapSet (m_convertedModelInterfaces, m_dwModelID, static_cast <CBaseModelInfoSAInterface*>(currentAtomicInterface) );
1842+ MapSet (m_convertedModelInterfaces, m_dwModelID, currentModelInterface );
18381843 return true ;
18391844}
18401845
@@ -1851,7 +1856,7 @@ bool CModelInfoSA::ConvertToAtomic()
18511856
18521857 // (FileEX): We do not destroy or set pRwObject to nullptr here
18531858 // because our IsLoaded code expects the RwObject to exist.
1854- // We destroy the old RwObject in CFileLoader_SetRelatedModelInfoCB after passing the IsLoaded condition in the SetCustomModel.
1859+ // We destroy the old RwObject in CRenderWareSA::ReplaceAllAtomicsInModel after passing the IsLoaded condition in the SetCustomModel.
18551860
18561861 // Set CAtomicModelInfo vtbl after copying data
18571862 newAtomicInterface->VFTBL = reinterpret_cast <CBaseModelInfo_SA_VTBL*>(VTBL_CAtomicModelInfo);
0 commit comments