diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index af4349a66e..88b3a1362c 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -394,25 +394,21 @@ void PhysicsEngine::computeCollisionEvents() { void* b = objectB->getUserPointer(); if (a || b) { // the manifold has up to 4 distinct points, but only extract info from the first - const ContactKey& contactKey = ContactKey(a, b); - ContactInfo& contactInfo = _contactMap[contactKey]; - contactInfo.update(_numContactFrames, contactManifold->getContactPoint(0), _originOffset); + _contactMap[ContactKey(a, b)].update(_numContactFrames, contactManifold->getContactPoint(0), _originOffset); // if our character capsule is colliding with something dynamic, claim simulation ownership. // do this by setting the entity's simulator-id to NULL, thereby causing EntityMotionState::sendUpdate // to set ownership to us. if (objectA == characterCollisionObject && !objectB->isStaticOrKinematicObject() && b) { - ObjectMotionState* B = static_cast(b); - EntityItem* entityB = static_cast(B)->getEntity(); - if (entityB->getSimulatorID() != myNodeID) { + EntityItem* entityB = static_cast(b)->getEntity(); + if (!entityB->getSimulatorID().isNull() && entityB->getSimulatorID() != myNodeID) { qDebug() << "CLAIMING B"; entityB->setSimulatorID(NULL); } } if (objectB == characterCollisionObject && !objectA->isStaticOrKinematicObject() && a) { - ObjectMotionState* A = static_cast(a); - EntityItem* entityA = static_cast(A)->getEntity(); - if (entityA->getSimulatorID() != myNodeID) { + EntityItem* entityA = static_cast(a)->getEntity(); + if (!entityA->getSimulatorID().isNull() && entityA->getSimulatorID() != myNodeID) { qDebug() << "CLAIMING A"; entityA->setSimulatorID(NULL); }