From c68efc2ed092f0cb592a15bcf545920201bdcabd Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 21 May 2017 08:29:35 -0700 Subject: [PATCH 1/3] treat locked like other properties that affect simulation --- libraries/entities/src/EntityItem.cpp | 10 ++++++++-- libraries/entities/src/EntityItem.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 2cfb71df0c..4b26d43fb6 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -810,7 +810,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef READ_ENTITY_PROPERTY(PROP_COLLISIONLESS, bool, updateCollisionless); READ_ENTITY_PROPERTY(PROP_COLLISION_MASK, uint8_t, updateCollisionMask); READ_ENTITY_PROPERTY(PROP_DYNAMIC, bool, updateDynamic); - READ_ENTITY_PROPERTY(PROP_LOCKED, bool, setLocked); + READ_ENTITY_PROPERTY(PROP_LOCKED, bool, updateLocked); READ_ENTITY_PROPERTY(PROP_USER_DATA, QString, setUserData); if (args.bitstreamVersion >= VERSION_ENTITIES_HAS_MARKETPLACE_ID) { @@ -1344,6 +1344,7 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(dynamic, updateDynamic); SET_ENTITY_PROPERTY_FROM_PROPERTIES(created, updateCreated); SET_ENTITY_PROPERTY_FROM_PROPERTIES(lifetime, updateLifetime); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(locked, updateLocked); // non-simulation properties below SET_ENTITY_PROPERTY_FROM_PROPERTIES(script, setScript); @@ -1352,7 +1353,6 @@ bool EntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(collisionSoundURL, setCollisionSoundURL); SET_ENTITY_PROPERTY_FROM_PROPERTIES(localRenderAlpha, setLocalRenderAlpha); SET_ENTITY_PROPERTY_FROM_PROPERTIES(visible, setVisible); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(locked, setLocked); SET_ENTITY_PROPERTY_FROM_PROPERTIES(userData, setUserData); SET_ENTITY_PROPERTY_FROM_PROPERTIES(marketplaceID, setMarketplaceID); SET_ENTITY_PROPERTY_FROM_PROPERTIES(name, setName); @@ -2764,6 +2764,12 @@ bool EntityItem::getLocked() const { } void EntityItem::setLocked(bool value) { + withWriteLock([&] { + _locked = value; + }); +} + +void EntityItem::updateLocked(bool value) { bool changed { false }; withWriteLock([&] { if (_locked != value) { diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 1896893b52..ba6077592e 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -305,6 +305,7 @@ public: bool getLocked() const; void setLocked(bool value); + void updateLocked(bool value); QString getUserData() const; virtual void setUserData(const QString& value); From 381de7a1e2abde0e26f63a19cc5b43b2d73e53fa Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 21 May 2017 08:42:53 -0700 Subject: [PATCH 2/3] tabs --- libraries/entities/src/EntityItem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 4b26d43fb6..1d83365102 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -2765,7 +2765,7 @@ bool EntityItem::getLocked() const { void EntityItem::setLocked(bool value) { withWriteLock([&] { - _locked = value; + _locked = value; }); } From 4142d8c6862ff06949cf2590326d8571be8493bf Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 21 May 2017 11:05:18 -0700 Subject: [PATCH 3/3] actions shouldn't change locked entities --- libraries/physics/src/ObjectAction.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/physics/src/ObjectAction.cpp b/libraries/physics/src/ObjectAction.cpp index de14a46be4..87732ded03 100644 --- a/libraries/physics/src/ObjectAction.cpp +++ b/libraries/physics/src/ObjectAction.cpp @@ -58,6 +58,10 @@ void ObjectAction::updateAction(btCollisionWorld* collisionWorld, btScalar delta return; } + if (ownerEntity->getLocked()) { + return; + } + updateActionWorker(deltaTimeStep); }