From 957b1d9ae434d514acca36da50c0261204133613 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Wed, 18 Jan 2017 13:22:54 -0800 Subject: [PATCH] pass just what is given to filter, more or less --- libraries/entities/src/EntityTree.cpp | 11 ++++++++--- libraries/entities/src/EntityTree.h | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index bb6bf204fb..8f5df26c17 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -925,13 +925,18 @@ void EntityTree::initEntityEditFilterEngine() { _hasEntityEditFilter = _entityEditFilterFunction.isFunction(); } -bool EntityTree::filterProperties(const EntityItemProperties& propertiesIn, EntityItemProperties& propertiesOut, bool& wasChanged) { +bool EntityTree::filterProperties(EntityItemProperties& propertiesIn, EntityItemProperties& propertiesOut, bool& wasChanged) { if (!_hasEntityEditFilter) { propertiesOut = propertiesIn; wasChanged = false; // not changed return true; // allowed } - QScriptValue inputValues = propertiesIn.copyToScriptValue(&_entityEditFilterEngine, true, true); + auto oldProperties = propertiesIn.getDesiredProperties(); + auto specifiedProperties = propertiesIn.getChangedProperties(); + propertiesIn.setDesiredProperties(specifiedProperties); + QScriptValue inputValues = propertiesIn.copyToScriptValue(&_entityEditFilterEngine, false, true, true); + propertiesIn.setDesiredProperties(oldProperties); + auto in = QJsonValue::fromVariant(inputValues.toVariant()); // grab json copy now, because the inputValues might be side effected by the filter. qDebug() << "fixme filter input" << propertiesIn << inputValues.toVariant() << in; QScriptValueList args; @@ -950,7 +955,7 @@ bool EntityTree::filterProperties(const EntityItemProperties& propertiesIn, Enti wasChanged = !eq; } - qDebug() << "fixme filter result" << propertiesOut << result.toVariant() << "accepted:" << accepted << "changed:" << (accepted && wasChanged); + qDebug() << "fixme filter accepted:" << accepted << " changed : " << (accepted && wasChanged) << " result:" << propertiesOut << result.toVariant(); return accepted; } diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index 7cdf1b0c77..29c51560fa 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -352,7 +352,7 @@ protected: float _maxTmpEntityLifetime { DEFAULT_MAX_TMP_ENTITY_LIFETIME }; - bool filterProperties(const EntityItemProperties& propertiesIn, EntityItemProperties& propertiesOut, bool& wasChanged); + bool filterProperties(EntityItemProperties& propertiesIn, EntityItemProperties& propertiesOut, bool& wasChanged); QString _entityEditFilter; bool _hasEntityEditFilter{ false }; QScriptEngine _entityEditFilterEngine;