From d01090afbc6f5dedb4a8a736f94e06ae99e87fcd Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 3 Mar 2014 17:13:06 -0800 Subject: [PATCH] reversing some changes --- libraries/particles/src/ParticleTree.cpp | 4 +--- libraries/particles/src/ParticleTree.h | 2 +- libraries/particles/src/ParticlesScriptingInterface.cpp | 4 +++- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/particles/src/ParticleTree.cpp b/libraries/particles/src/ParticleTree.cpp index 65a27dd325..a254305789 100644 --- a/libraries/particles/src/ParticleTree.cpp +++ b/libraries/particles/src/ParticleTree.cpp @@ -459,6 +459,7 @@ bool ParticleTree::pruneOperation(OctreeElement* element, void* extraData) { } void ParticleTree::update() { + lockForWrite(); _isDirty = true; ParticleTreeUpdateArgs args = { }; @@ -473,9 +474,7 @@ void ParticleTree::update() { AABox treeBounds = getRoot()->getAABox(); if (!shouldDie && treeBounds.contains(args._movingParticles[i].getPosition())) { - lockForWrite(); storeParticle(args._movingParticles[i]); - unlock(); } else { uint32_t particleID = args._movingParticles[i].getID(); quint64 deletedAt = usecTimestampNow(); @@ -486,7 +485,6 @@ void ParticleTree::update() { } // prune the tree... - lockForWrite(); recurseTreeWithOperation(pruneOperation, NULL); unlock(); } diff --git a/libraries/particles/src/ParticleTree.h b/libraries/particles/src/ParticleTree.h index 08e8e51a05..f3b8f5183d 100644 --- a/libraries/particles/src/ParticleTree.h +++ b/libraries/particles/src/ParticleTree.h @@ -44,7 +44,7 @@ public: void addParticle(const ParticleID& particleID, const ParticleProperties& properties); void deleteParticle(const ParticleID& particleID); const Particle* findClosestParticle(glm::vec3 position, float targetRadius); - const Particle* findParticleByID(uint32_t id); + const Particle* findParticleByID(uint32_t id, bool alreadyLocked = false); /// finds all particles that touch a sphere /// \param center the center of the sphere diff --git a/libraries/particles/src/ParticlesScriptingInterface.cpp b/libraries/particles/src/ParticlesScriptingInterface.cpp index c2376e8d72..a25dde1b9e 100644 --- a/libraries/particles/src/ParticlesScriptingInterface.cpp +++ b/libraries/particles/src/ParticlesScriptingInterface.cpp @@ -33,7 +33,9 @@ ParticleID ParticlesScriptingInterface::addParticle(const ParticleProperties& pr // If we have a local particle tree set, then also update it. if (_particleTree) { + _particleTree->lockForWrite(); _particleTree->addParticle(id, properties); + _particleTree->unlock(); } return id; @@ -64,7 +66,7 @@ ParticleProperties ParticlesScriptingInterface::getParticleProperties(ParticleID } if (_particleTree) { _particleTree->lockForRead(); - const Particle* particle = _particleTree->findParticleByID(identity.id); + const Particle* particle = _particleTree->findParticleByID(identity.id, true); if (particle) { results.copyFromParticle(*particle); } else {