adjust how the decision to send action changes over the wire is made

This commit is contained in:
Seth Alves 2015-11-12 14:19:23 -08:00
parent 2e635bd936
commit a8cd891e48
6 changed files with 10 additions and 11 deletions

View file

@ -211,7 +211,7 @@ bool AvatarActionHold::updateArguments(QVariantMap arguments) {
auto ownerEntity = _ownerEntity.lock();
if (ownerEntity) {
ownerEntity->setActionDataDirty(true);
ownerEntity->setActionDataNeedsUpdate(true);
}
});
activateBody();

View file

@ -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;

View file

@ -408,7 +408,8 @@ public:
QList<QUuid> 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<QUuid> _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<QUuid, quint64> _previouslyDeletedActions;

View file

@ -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;
}

View file

@ -129,7 +129,7 @@ bool ObjectActionOffset::updateArguments(QVariantMap arguments) {
auto ownerEntity = _ownerEntity.lock();
if (ownerEntity) {
ownerEntity->setActionDataDirty(true);
ownerEntity->setActionDataNeedsUpdate(true);
}
});
activateBody();

View file

@ -162,7 +162,7 @@ bool ObjectActionSpring::updateArguments(QVariantMap arguments) {
auto ownerEntity = _ownerEntity.lock();
if (ownerEntity) {
ownerEntity->setActionDataDirty(true);
ownerEntity->setActionDataNeedsUpdate(true);
}
});
activateBody();