From f08fecbfa75355858519dcd60823e740a86e796b Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 14 Apr 2017 16:25:27 -0700 Subject: [PATCH] make sure new constraint data gets transmitted over network --- libraries/physics/src/ObjectConstraintHinge.cpp | 4 ++++ libraries/physics/src/PhysicsEngine.cpp | 3 +++ 2 files changed, 7 insertions(+) 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());