EPhysics: fix soft body rotation_set
--This line, and those below, will be ignored-- SVN revision: 80104
This commit is contained in:
parent
154041e62e
commit
f481315a26
|
@ -3864,6 +3864,27 @@ ephysics_body_rotation_get(const EPhysics_Body *body, EPhysics_Quaternion *rotat
|
|||
return quat;
|
||||
}
|
||||
|
||||
static void
|
||||
_ephysics_body_soft_body_rotation_set(EPhysics_Body *body, btTransform trans)
|
||||
{
|
||||
btSoftBody::Node *node;
|
||||
const btScalar margin= body->soft_body->getCollisionShape()->getMargin();
|
||||
ATTRIBUTE_ALIGNED16(btDbvtVolume) vol;
|
||||
|
||||
for (int i = 0; i < body->soft_body->m_nodes.size(); i++)
|
||||
{
|
||||
node = &body->soft_body->m_nodes[i];
|
||||
node->m_n = (trans.getBasis() * btVector3(1, 1, 1));
|
||||
vol = btDbvtVolume::FromCR(node->m_x, margin);
|
||||
|
||||
body->soft_body->m_ndbvt.update(node->m_leaf, vol);
|
||||
}
|
||||
|
||||
body->soft_body->updateNormals();
|
||||
body->soft_body->updateBounds();
|
||||
body->soft_body->updateConstants();
|
||||
}
|
||||
|
||||
EAPI void
|
||||
ephysics_body_rotation_set(EPhysics_Body *body, EPhysics_Quaternion *quat)
|
||||
{
|
||||
|
@ -3889,13 +3910,13 @@ ephysics_body_rotation_set(EPhysics_Body *body, EPhysics_Quaternion *quat)
|
|||
ephysics_body_activate(body, EINA_TRUE);
|
||||
|
||||
bt_quat = btQuaternion(x, y, z, w);
|
||||
|
||||
if (body->soft_body)
|
||||
body->soft_body->rotate(bt_quat);
|
||||
else
|
||||
{
|
||||
trans = _ephysics_body_transform_get(body);
|
||||
trans.setRotation(bt_quat);
|
||||
|
||||
if (body->soft_body)
|
||||
_ephysics_body_soft_body_rotation_set(body, trans);
|
||||
else
|
||||
{
|
||||
body->rigid_body->proceedToTransform(trans);
|
||||
body->rigid_body->getMotionState()->setWorldTransform(trans);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue