diff --git a/libraries/physics/src/ObjectConstraintHinge.cpp b/libraries/physics/src/ObjectConstraintHinge.cpp index d8270ba8ff..82a793ddaa 100644 --- a/libraries/physics/src/ObjectConstraintHinge.cpp +++ b/libraries/physics/src/ObjectConstraintHinge.cpp @@ -115,6 +115,10 @@ btTypedConstraint* ObjectConstraintHinge::getConstraint() { _constraint = constraint; }); + // if we don't wake up rigidBodyA, we may not send the dynamicData property over the network + forceBodyNonStatic(); + activateBody(); + return constraint; } diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 0c4290eff2..141f70b971 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -625,6 +625,9 @@ bool PhysicsEngine::addDynamic(EntityDynamicPointer dynamic) { void PhysicsEngine::removeDynamic(const QUuid dynamicID) { if (_objectDynamics.contains(dynamicID)) { ObjectDynamicPointer dynamic = std::static_pointer_cast(_objectDynamics[dynamicID]); + if (!dynamic) { + return; + } QList rigidBodies = dynamic->getRigidBodies(); if (dynamic->isAction()) { ObjectAction* objectAction = static_cast(dynamic.get());