From a8cd891e48f6b2a53aeeedfd6c9f34ee66a086d1 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 12 Nov 2015 14:19:23 -0800 Subject: [PATCH] adjust how the decision to send action changes over the wire is made --- interface/src/avatar/AvatarActionHold.cpp | 2 +- libraries/entities/src/EntityItem.cpp | 8 +++----- libraries/entities/src/EntityItem.h | 5 +++-- libraries/physics/src/EntityMotionState.cpp | 2 +- libraries/physics/src/ObjectActionOffset.cpp | 2 +- libraries/physics/src/ObjectActionSpring.cpp | 2 +- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/interface/src/avatar/AvatarActionHold.cpp b/interface/src/avatar/AvatarActionHold.cpp index 866f444b32..0d86e79a2d 100644 --- a/interface/src/avatar/AvatarActionHold.cpp +++ b/interface/src/avatar/AvatarActionHold.cpp @@ -211,7 +211,7 @@ bool AvatarActionHold::updateArguments(QVariantMap arguments) { auto ownerEntity = _ownerEntity.lock(); if (ownerEntity) { - ownerEntity->setActionDataDirty(true); + ownerEntity->setActionDataNeedsUpdate(true); } }); activateBody(); diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 807186a304..ef39cf8063 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1740,8 +1740,6 @@ void EntityItem::deserializeActionsInternal() { } } - _actionDataDirty = true; - return; } @@ -1802,11 +1800,11 @@ void EntityItem::serializeActions(bool& success, QByteArray& result) const { } const QByteArray EntityItem::getActionDataInternal() const { - if (_actionDataDirty) { + if (_actionDataNeedsUpdate) { bool success; serializeActions(success, _allActionsDataCache); if (success) { - _actionDataDirty = false; + _actionDataNeedsUpdate = false; } } return _allActionsDataCache; @@ -1816,7 +1814,7 @@ const QByteArray EntityItem::getActionData() const { QByteArray result; assertUnlocked(); - if (_actionDataDirty) { + if (_actionDataNeedsUpdate) { withWriteLock([&] { getActionDataInternal(); result = _allActionsDataCache; diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index b3c976c1ca..6e4f3ac2ca 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -408,7 +408,8 @@ public: QList getActionIDs() { return _objectActions.keys(); } QVariantMap getActionArguments(const QUuid& actionID) const; void deserializeActions(); - void setActionDataDirty(bool value) const { _actionDataDirty = value; } + void setActionDataNeedsUpdate(bool value) const { _actionDataNeedsUpdate = value; } + bool actionDataNeedsUpdate() const { return _actionDataNeedsUpdate; } bool shouldSuppressLocationEdits() const; void setSourceUUID(const QUuid& sourceUUID) { _sourceUUID = sourceUUID; } @@ -511,7 +512,7 @@ protected: // are used to keep track of and work around this situation. void checkWaitingToRemove(EntitySimulation* simulation = nullptr); mutable QSet _actionsToRemove; - mutable bool _actionDataDirty = false; + mutable bool _actionDataNeedsUpdate = false; // _previouslyDeletedActions is used to avoid an action being re-added due to server round-trip lag static quint64 _rememberDeletedActionTime; mutable QHash _previouslyDeletedActions; diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index bd744c8be3..841a41cb04 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -297,7 +297,7 @@ bool EntityMotionState::remoteSimulationOutOfSync(uint32_t simulationStep) { _serverPosition += dt * _serverVelocity; } - if (_serverActionData != _entity->getActionData()) { + if (_entity->actionDataNeedsUpdate()) { setOutgoingPriority(SCRIPT_EDIT_SIMULATION_PRIORITY); return true; } diff --git a/libraries/physics/src/ObjectActionOffset.cpp b/libraries/physics/src/ObjectActionOffset.cpp index 2cfd98497b..be2f5b40a0 100644 --- a/libraries/physics/src/ObjectActionOffset.cpp +++ b/libraries/physics/src/ObjectActionOffset.cpp @@ -129,7 +129,7 @@ bool ObjectActionOffset::updateArguments(QVariantMap arguments) { auto ownerEntity = _ownerEntity.lock(); if (ownerEntity) { - ownerEntity->setActionDataDirty(true); + ownerEntity->setActionDataNeedsUpdate(true); } }); activateBody(); diff --git a/libraries/physics/src/ObjectActionSpring.cpp b/libraries/physics/src/ObjectActionSpring.cpp index c1cd2db5ca..7289c88a8f 100644 --- a/libraries/physics/src/ObjectActionSpring.cpp +++ b/libraries/physics/src/ObjectActionSpring.cpp @@ -162,7 +162,7 @@ bool ObjectActionSpring::updateArguments(QVariantMap arguments) { auto ownerEntity = _ownerEntity.lock(); if (ownerEntity) { - ownerEntity->setActionDataDirty(true); + ownerEntity->setActionDataNeedsUpdate(true); } }); activateBody();