From b873d92469edff1e22670da7067d9cf430079112 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 6 Jan 2016 14:12:58 -0800 Subject: [PATCH] try harder to ensure that a held object is active in bullet --- interface/src/avatar/AvatarActionHold.cpp | 2 +- libraries/physics/src/ObjectAction.cpp | 9 +++++++-- libraries/physics/src/ObjectAction.h | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/interface/src/avatar/AvatarActionHold.cpp b/interface/src/avatar/AvatarActionHold.cpp index 4dda14e194..12c792e631 100644 --- a/interface/src/avatar/AvatarActionHold.cpp +++ b/interface/src/avatar/AvatarActionHold.cpp @@ -90,7 +90,7 @@ void AvatarActionHold::prepareForPhysicsSimulation() { // _palmRotationFromRigidBody = avatarRotationInverse * palmRotation; }); - activateBody(); + activateBody(true); } std::shared_ptr AvatarActionHold::getTarget(glm::quat& rotation, glm::vec3& position) { diff --git a/libraries/physics/src/ObjectAction.cpp b/libraries/physics/src/ObjectAction.cpp index e8e1188dc9..95af7b32fe 100644 --- a/libraries/physics/src/ObjectAction.cpp +++ b/libraries/physics/src/ObjectAction.cpp @@ -237,10 +237,15 @@ void ObjectAction::setAngularVelocity(glm::vec3 angularVelocity) { rigidBody->activate(); } -void ObjectAction::activateBody() { +void ObjectAction::activateBody(bool forceActivation) { auto rigidBody = getRigidBody(); if (rigidBody) { - rigidBody->activate(); + rigidBody->activate(forceActivation); + if (! rigidBody->isActive()) { + qDebug() << "ObjectAction::activateBody -- rigidBody->activate() failed" << (void*)rigidBody; + } + } else { + qDebug() << "ObjectAction::activateBody -- no rigid body" << (void*)rigidBody; } } diff --git a/libraries/physics/src/ObjectAction.h b/libraries/physics/src/ObjectAction.h index 4ca13f2fbf..efab75b802 100644 --- a/libraries/physics/src/ObjectAction.h +++ b/libraries/physics/src/ObjectAction.h @@ -62,7 +62,7 @@ protected: virtual void setLinearVelocity(glm::vec3 linearVelocity) override; virtual glm::vec3 getAngularVelocity() override; virtual void setAngularVelocity(glm::vec3 angularVelocity) override; - virtual void activateBody(); + virtual void activateBody(bool forceActivation = false); virtual void forceBodyNonStatic(); EntityItemWeakPointer _ownerEntity;