aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/studio_virtualmodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/public/studio_virtualmodel.cpp')
-rw-r--r--mp/src/public/studio_virtualmodel.cpp19
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;
+ }
+ }
+ }
+ }
+ }
}