PyBullet: try to address activation/deactivation issue with fixed base multibody with links.

This commit is contained in:
erwin coumans
2021-04-24 23:52:53 -07:00
parent 6cb72b5128
commit 3b2e46e7dd
3 changed files with 7 additions and 3 deletions

View File

@@ -24,6 +24,7 @@ subject to the following restrictions:
#define WANTS_DEACTIVATION 3
#define DISABLE_DEACTIVATION 4
#define DISABLE_SIMULATION 5
#define FIXED_BASE_MULTI_BODY 6
struct btBroadphaseProxy;
class btCollisionShape;
@@ -304,7 +305,7 @@ public:
SIMD_FORCE_INLINE bool isActive() const
{
return ((getActivationState() != ISLAND_SLEEPING) && (getActivationState() != DISABLE_SIMULATION));
return ((getActivationState() != FIXED_BASE_MULTI_BODY) && (getActivationState() != ISLAND_SLEEPING) && (getActivationState() != DISABLE_SIMULATION));
}
void setRestitution(btScalar rest)

View File

@@ -545,7 +545,10 @@ public:
{
m_canWakeup = canWakeup;
}
bool isAwake() const { return m_awake; }
bool isAwake() const
{
return m_awake;
}
void wakeUp();
void goToSleep();
void checkMotionAndSleepIfRequired(btScalar timestep);

View File

@@ -139,7 +139,7 @@ void btMultiBodyDynamicsWorld::updateActivationState(btScalar timeStep)
{
if (body->hasFixedBase())
{
col->setActivationState(ISLAND_SLEEPING);
col->setActivationState(FIXED_BASE_MULTI_BODY);
} else
{
col->setActivationState(WANTS_DEACTIVATION);