diff options
Diffstat (limited to 'mp/src/common/studiobyteswap.cpp')
| -rw-r--r-- | mp/src/common/studiobyteswap.cpp | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/mp/src/common/studiobyteswap.cpp b/mp/src/common/studiobyteswap.cpp index d7723d48..0c4e59d8 100644 --- a/mp/src/common/studiobyteswap.cpp +++ b/mp/src/common/studiobyteswap.cpp @@ -1915,6 +1915,22 @@ int ByteswapMDLFile( void *pDestBase, void *pSrcBase, const int fileSize ) SET_INDEX_POINTERS_FIXUP( pData, pLinearBone, qalignmentindex ) WriteBuffer<float>( &pDataDest, &pDataSrc, 4*numBones ); } + + /** BONE FLEX DRIVERS **/ + if ( pStudioHdr2->m_nBoneFlexDriverIndex ) + { + SET_INDEX_POINTERS_FIXUP( pData, pStudioHdr2, m_nBoneFlexDriverIndex ) + DECLARE_OBJECT_POINTERS( pBoneFlexDriver, pData, mstudioboneflexdriver_t ) + ITERATE_BLOCK( pBoneFlexDriver, pStudioHdr2->m_nBoneFlexDriverCount ) + { + WriteObjects( pBoneFlexDriverDest, pBoneFlexDriverSrc ); + + /** BONE FLEX DRIVER CONTROLS **/ + + SET_INDEX_POINTERS_FIXUP( pData, pBoneFlexDriver, m_nControlIndex ); + WriteObjects< mstudioboneflexdrivercontrol_t >( &pDataDest, &pDataSrc, SrcNative( &pBoneFlexDriver->m_nControlCount ) ); + } + } } } @@ -2516,7 +2532,8 @@ BEGIN_BYTESWAP_DATADESC( studiohdr_t ) DEFINE_INDEX( unused4, FIELD_INTEGER ), DEFINE_FIELD( numflexcontrollerui, FIELD_INTEGER ), DEFINE_INDEX( flexcontrolleruiindex, FIELD_INTEGER ), - DEFINE_ARRAY( unused3, FIELD_INTEGER, 2 ), + DEFINE_FIELD( flVertAnimFixedPointScale, FIELD_FLOAT ), + DEFINE_ARRAY( unused3, FIELD_INTEGER, 1 ), DEFINE_INDEX( studiohdr2index, FIELD_INTEGER ), DEFINE_ARRAY( unused2, FIELD_INTEGER, 1 ), END_BYTESWAP_DATADESC() @@ -2530,7 +2547,9 @@ BEGIN_BYTESWAP_DATADESC( studiohdr2_t ) DEFINE_FIELD( flMaxEyeDeflection, FIELD_FLOAT ), DEFINE_INDEX( linearboneindex, FIELD_INTEGER ), DEFINE_INDEX( sznameindex, FIELD_INTEGER ), - DEFINE_ARRAY( reserved, FIELD_INTEGER, 58 ), + DEFINE_INDEX( m_nBoneFlexDriverCount, FIELD_INTEGER ), + DEFINE_INDEX( m_nBoneFlexDriverIndex, FIELD_INTEGER ), + DEFINE_ARRAY( reserved, FIELD_INTEGER, 56 ), END_BYTESWAP_DATADESC() BEGIN_BYTESWAP_DATADESC( mstudiobone_t ) @@ -2567,6 +2586,20 @@ BEGIN_BYTESWAP_DATADESC( mstudiolinearbone_t ) DEFINE_ARRAY( unused, FIELD_INTEGER, 6 ), END_BYTESWAP_DATADESC() +BEGIN_BYTESWAP_DATADESC( mstudioboneflexdrivercontrol_t ) + DEFINE_INDEX( m_nBoneComponent, FIELD_INTEGER ), + DEFINE_FIELD( m_nFlexControllerIndex, FIELD_INTEGER ), + DEFINE_INDEX( m_flMin, FIELD_FLOAT ), + DEFINE_INDEX( m_flMax, FIELD_FLOAT ), +END_BYTESWAP_DATADESC() + +BEGIN_BYTESWAP_DATADESC( mstudioboneflexdriver_t ) + DEFINE_INDEX( m_nBoneIndex, FIELD_INTEGER ), + DEFINE_FIELD( m_nControlCount, FIELD_INTEGER ), + DEFINE_INDEX( m_nControlIndex, FIELD_FLOAT ), + DEFINE_ARRAY( unused, FIELD_INTEGER, 3 ), +END_BYTESWAP_DATADESC() + BEGIN_BYTESWAP_DATADESC( mstudioaxisinterpbone_t ) DEFINE_FIELD( control, FIELD_INTEGER ), DEFINE_FIELD( axis, FIELD_INTEGER ), |