{\r
IBoneSceneNode* node=jointChildSceneNodes[i];\r
SJoint *joint=AllJoints[i];\r
- node->setPosition(joint->LocalAnimatedMatrix.getTranslation());\r
- node->setRotation(joint->LocalAnimatedMatrix.getRotationDegrees());\r
- node->setScale(joint->LocalAnimatedMatrix.getScale());\r
+\r
+ if ( joint->UseAnimationFrom ) // Seems to work better (else solution seems to mess up sometimes) and would be faster. Any disadvantage?\r
+ {\r
+ node->setPosition(joint->Animatedposition);\r
+ core::quaternion qrot = joint->Animatedrotation;\r
+ qrot.W *= -1.f; // Animation system uses right-handed rotations? Argh... \r
+ irr::core::vector3df euler;\r
+ qrot.toEuler(euler);\r
+ euler *= core::RADTODEG;\r
+ node->setRotation(euler);\r
+ node->setScale(joint->Animatedscale);\r
+ }\r
+ else\r
+ {\r
+ node->setPosition(joint->LocalAnimatedMatrix.getTranslation());\r
+ node->setRotation(joint->LocalAnimatedMatrix.getRotationDegrees());\r
+ node->setScale(joint->LocalAnimatedMatrix.getScale());\r
+ }\r
\r
node->positionHint=joint->positionHint;\r
node->scaleHint=joint->scaleHint;\r