From 67c605c10af79ecf79cb71e243ab5c47053e204d Mon Sep 17 00:00:00 2001 From: sabrina-shanman <sabrina@highfidelity.io> Date: Mon, 18 Jun 2018 16:12:38 -0700 Subject: [PATCH 1/3] Do not use ownership tracking in serverless mode in PhysicalEntitySimulation --- libraries/physics/src/PhysicalEntitySimulation.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index e2970d6a03..bb8e518dc6 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -328,13 +328,7 @@ void PhysicalEntitySimulation::handleChangedMotionStates(const VectorOfMotionSta } void PhysicalEntitySimulation::addOwnershipBid(EntityMotionState* motionState) { - if (getEntityTree()->isServerlessMode()) { - EntityItemPointer entity = motionState->getEntity(); - auto nodeList = DependencyManager::get<NodeList>(); - auto sessionID = nodeList->getSessionUUID(); - entity->setSimulationOwner(SimulationOwner(sessionID, SCRIPT_GRAB_SIMULATION_PRIORITY)); - _owned.push_back(motionState); - } else { + if (!getEntityTree()->isServerlessMode()) { motionState->initForBid(); motionState->sendBid(_entityPacketSender, _physicsEngine->getNumSubsteps()); _bids.push_back(motionState); @@ -343,8 +337,10 @@ void PhysicalEntitySimulation::addOwnershipBid(EntityMotionState* motionState) { } void PhysicalEntitySimulation::addOwnership(EntityMotionState* motionState) { - motionState->initForOwned(); - _owned.push_back(motionState); + if (!getEntityTree()->isServerlessMode()) { + motionState->initForOwned(); + _owned.push_back(motionState); + } } void PhysicalEntitySimulation::sendOwnershipBids(uint32_t numSubsteps) { From c039d20304f8789e0d4a3209987a2324e6bc4738 Mon Sep 17 00:00:00 2001 From: sabrina-shanman <sabrina@highfidelity.io> Date: Wed, 20 Jun 2018 10:19:19 -0700 Subject: [PATCH 2/3] Fix objects snapping back when selected --- libraries/physics/src/EntityMotionState.cpp | 8 +------- libraries/physics/src/PhysicalEntitySimulation.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index 594ea476f6..743d5b0c19 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -347,7 +347,7 @@ bool EntityMotionState::remoteSimulationOutOfSync(uint32_t simulationStep) { if (_numInactiveUpdates > 0) { const uint8_t MAX_NUM_INACTIVE_UPDATES = 20; - if (_numInactiveUpdates > MAX_NUM_INACTIVE_UPDATES || isServerlessMode()) { + if (_numInactiveUpdates > MAX_NUM_INACTIVE_UPDATES) { // clear local ownership (stop sending updates) and let the server clear itself _entity->clearSimulationOwnership(); return false; @@ -829,9 +829,3 @@ void EntityMotionState::clearObjectVelocities() const { } _entity->setAcceleration(glm::vec3(0.0f)); } - -bool EntityMotionState::isServerlessMode() { - EntityTreeElementPointer element = _entity->getElement(); - EntityTreePointer tree = element ? element->getTree() : nullptr; - return tree ? tree->isServerlessMode() : false; -} diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index bb8e518dc6..60b1eb9b59 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -277,12 +277,15 @@ void PhysicalEntitySimulation::getObjectsToChange(VectorOfMotionStates& result) } void PhysicalEntitySimulation::handleDeactivatedMotionStates(const VectorOfMotionStates& motionStates) { + boolean serverlessMode = getEntityTree()->isServerlessMode(); for (auto stateItr : motionStates) { ObjectMotionState* state = &(*stateItr); assert(state); if (state->getType() == MOTIONSTATE_TYPE_ENTITY) { EntityMotionState* entityState = static_cast<EntityMotionState*>(state); - entityState->handleDeactivation(); + if (!serverlessMode) { + entityState->handleDeactivation(); + } EntityItemPointer entity = entityState->getEntity(); _entitiesToSort.insert(entity); } @@ -379,6 +382,7 @@ void PhysicalEntitySimulation::sendOwnershipBids(uint32_t numSubsteps) { } void PhysicalEntitySimulation::sendOwnedUpdates(uint32_t numSubsteps) { + boolean serverlessMode = getEntityTree()->isServerlessMode(); PROFILE_RANGE_EX(simulation_physics, "Update", 0x00000000, (uint64_t)_owned.size()); uint32_t i = 0; while (i < _owned.size()) { @@ -390,7 +394,7 @@ void PhysicalEntitySimulation::sendOwnedUpdates(uint32_t numSubsteps) { } _owned.remove(i); } else { - if (_owned[i]->shouldSendUpdate(numSubsteps)) { + if (!serverlessMode && _owned[i]->shouldSendUpdate(numSubsteps)) { _owned[i]->sendUpdate(_entityPacketSender, numSubsteps); } ++i; From 59833d8f28e44343a8ade79f6f361f7f253b8539 Mon Sep 17 00:00:00 2001 From: sabrina-shanman <sabrina@highfidelity.io> Date: Wed, 20 Jun 2018 15:54:19 -0700 Subject: [PATCH 3/3] Do not use boolean for variable definitions. Use bool instead. --- libraries/physics/src/PhysicalEntitySimulation.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index 60b1eb9b59..6b238f4cfc 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -277,7 +277,7 @@ void PhysicalEntitySimulation::getObjectsToChange(VectorOfMotionStates& result) } void PhysicalEntitySimulation::handleDeactivatedMotionStates(const VectorOfMotionStates& motionStates) { - boolean serverlessMode = getEntityTree()->isServerlessMode(); + bool serverlessMode = getEntityTree()->isServerlessMode(); for (auto stateItr : motionStates) { ObjectMotionState* state = &(*stateItr); assert(state); @@ -382,7 +382,7 @@ void PhysicalEntitySimulation::sendOwnershipBids(uint32_t numSubsteps) { } void PhysicalEntitySimulation::sendOwnedUpdates(uint32_t numSubsteps) { - boolean serverlessMode = getEntityTree()->isServerlessMode(); + bool serverlessMode = getEntityTree()->isServerlessMode(); PROFILE_RANGE_EX(simulation_physics, "Update", 0x00000000, (uint64_t)_owned.size()); uint32_t i = 0; while (i < _owned.size()) {