add MDL version 49 support

This commit is contained in:
nillerusr
2022-11-29 18:49:29 +03:00
parent 2fb712af66
commit d2b202836d
4 changed files with 121 additions and 21 deletions
+8 -5
View File
@@ -897,9 +897,13 @@ void CStudioRenderContext::R_StudioBuildMeshStrips( studiomeshgroup_t* pMeshGrou
// Compute the amount of memory we need to store the strip data
int i;
int stripDataSize = 0;
size_t stripHdrSize = (pStripGroup->flags & OptimizedModel::STRIPGROUP_IS_MDL49)
? sizeof(OptimizedModel::StripHeader_v49_t) : sizeof(OptimizedModel::StripHeader_t);
for( i = 0; i < pStripGroup->numStrips; ++i )
{
stripDataSize += sizeof(OptimizedModel::StripHeader_t);
stripDataSize += stripHdrSize;
stripDataSize += pStripGroup->pStrip(i)->numBoneStateChanges *
sizeof(OptimizedModel::BoneStateChangeHeader_t);
}
@@ -907,15 +911,14 @@ void CStudioRenderContext::R_StudioBuildMeshStrips( studiomeshgroup_t* pMeshGrou
pMeshGroup->m_pStripData = (OptimizedModel::StripHeader_t*)malloc(stripDataSize);
// Copy over the strip info
int boneStateChangeOffset = pStripGroup->numStrips * sizeof(OptimizedModel::StripHeader_t);
int boneStateChangeOffset = pStripGroup->numStrips * stripHdrSize;
for( i = 0; i < pStripGroup->numStrips; ++i )
{
memcpy( &pMeshGroup->m_pStripData[i], pStripGroup->pStrip(i),
sizeof( OptimizedModel::StripHeader_t ) );
memcpy( &pMeshGroup->m_pStripData[i], pStripGroup->pStrip(i), stripHdrSize);
// Fixup the bone state change offset, since we have it right after the strip data
pMeshGroup->m_pStripData[i].boneStateChangeOffset = boneStateChangeOffset -
i * sizeof(OptimizedModel::StripHeader_t);
i * stripHdrSize;
// copy over bone state changes
int boneWeightSize = pMeshGroup->m_pStripData[i].numBoneStateChanges *