From fd5520b87f45d381da405fb4775ff95e14d6d7ed Mon Sep 17 00:00:00 2001 From: Adnan Munawar Date: Wed, 3 Jul 2024 04:51:16 +0500 Subject: [PATCH] Better update of ghost object pose --- ambf_framework/afFramework.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ambf_framework/afFramework.cpp b/ambf_framework/afFramework.cpp index de6b1ea8..4b257bc0 100644 --- a/ambf_framework/afFramework.cpp +++ b/ambf_framework/afFramework.cpp @@ -8030,7 +8030,18 @@ void afGhostObject::update(double dt) // cTransform trans; // trans << m_bulletGhostObject->getWorldTransform(); // setLocalTransform(trans); - m_bulletGhostObject->setWorldTransform(to_btTransform(m_globalTransform)); + cTransform T_g_p = getLocalTransform(); + if (m_parentObject){ + cTransform T_p_w; + if (m_parentObject->getType() == afType::RIGID_BODY || m_parentObject->getType() == afType::SOFT_BODY || m_parentObject->getType() == afType::GHOST_OBJECT){ + T_p_w << ((afInertialObject*)m_parentObject)->getCOMTransform(); + } + else{ + T_p_w = m_parentObject->getGlobalTransform(); + } + T_g_p = T_p_w * T_g_p; + } + m_bulletGhostObject->setWorldTransform(to_btTransform(T_g_p)); m_sensedObjectsMaps.clear(); btManifoldArray* manifoldArray = new btManifoldArray();