diff options
Diffstat (limited to '')
-rw-r--r-- | linden/indra/llcharacter/llpose.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/linden/indra/llcharacter/llpose.cpp b/linden/indra/llcharacter/llpose.cpp index 3a6a221..f496b7b 100644 --- a/linden/indra/llcharacter/llpose.cpp +++ b/linden/indra/llcharacter/llpose.cpp | |||
@@ -379,15 +379,20 @@ void LLJointStateBlender::blendJointStates(BOOL apply_now) | |||
379 | } | 379 | } |
380 | } | 380 | } |
381 | 381 | ||
382 | // apply blended transforms | 382 | if (!added_scale.isFinite()) |
383 | target_joint->setPosition(blended_pos); | 383 | { |
384 | target_joint->setScale(blended_scale); | 384 | added_scale.clearVec(); |
385 | target_joint->setRotation(blended_rot); | 385 | } |
386 | 386 | ||
387 | // apply additive transforms | 387 | if (!blended_scale.isFinite()) |
388 | target_joint->setPosition(target_joint->getPosition() + added_pos); | 388 | { |
389 | target_joint->setScale(target_joint->getScale() + added_scale); | 389 | blended_scale.setVec(1,1,1); |
390 | target_joint->setRotation(added_rot * target_joint->getRotation()); | 390 | } |
391 | |||
392 | // apply transforms | ||
393 | target_joint->setPosition(blended_pos + added_pos); | ||
394 | target_joint->setScale(blended_scale + added_scale); | ||
395 | target_joint->setRotation(added_rot * blended_rot); | ||
391 | 396 | ||
392 | if (apply_now) | 397 | if (apply_now) |
393 | { | 398 | { |