diff options
Diffstat (limited to 'mp/src/public/studio_virtualmodel.cpp')
| -rw-r--r-- | mp/src/public/studio_virtualmodel.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/mp/src/public/studio_virtualmodel.cpp b/mp/src/public/studio_virtualmodel.cpp index 748ed3b2..269e7cdf 100644 --- a/mp/src/public/studio_virtualmodel.cpp +++ b/mp/src/public/studio_virtualmodel.cpp @@ -572,4 +572,23 @@ void virtualmodel_t::AppendIKLocks( int group, const studiohdr_t *pStudioHdr ) }
m_iklock = iklock;
+
+ // copy knee directions for uninitialized knees
+ if ( group != 0 )
+ {
+ studiohdr_t *pBaseHdr = (studiohdr_t *)m_group[ 0 ].GetStudioHdr();
+ if ( pStudioHdr->numikchains == pBaseHdr->numikchains )
+ {
+ for (j = 0; j < pStudioHdr->numikchains; j++)
+ {
+ if ( pBaseHdr->pIKChain( j )->pLink(0)->kneeDir.LengthSqr() == 0.0f )
+ {
+ if ( pStudioHdr->pIKChain( j )->pLink(0)->kneeDir.LengthSqr() > 0.0f )
+ {
+ pBaseHdr->pIKChain( j )->pLink(0)->kneeDir = pStudioHdr->pIKChain( j )->pLink(0)->kneeDir;
+ }
+ }
+ }
+ }
+ }
}
|