diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-05-18 20:11:02 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-05-18 20:11:02 +0300 |
commit | 1ee62de5ae283068baa8275a01d2245fd2cb7759 (patch) | |
tree | 311887f0977aa68b6b8233a8e26de1181d2e1848 /src/particle/particlecontainer.cpp | |
parent | c8e22bbb7cc1531b09b994e06a58fd8c4664b7bb (diff) | |
download | mv-1ee62de5ae283068baa8275a01d2245fd2cb7759.tar.gz mv-1ee62de5ae283068baa8275a01d2245fd2cb7759.tar.bz2 mv-1ee62de5ae283068baa8275a01d2245fd2cb7759.tar.xz mv-1ee62de5ae283068baa8275a01d2245fd2cb7759.zip |
Move particlevector into separate file.
Diffstat (limited to 'src/particle/particlecontainer.cpp')
-rw-r--r-- | src/particle/particlecontainer.cpp | 76 |
1 files changed, 2 insertions, 74 deletions
diff --git a/src/particle/particlecontainer.cpp b/src/particle/particlecontainer.cpp index 68e0c9d6c..c537a163b 100644 --- a/src/particle/particlecontainer.cpp +++ b/src/particle/particlecontainer.cpp @@ -20,9 +20,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "particle/particle.h" #include "particle/particlecontainer.h" +#include "particle/particle.h" + #include "utils/delete2.h" #include "debug.h" @@ -54,76 +55,3 @@ void ParticleContainer::moveTo(const float x, const float y) if (mNext) mNext->moveTo(x, y); } - -// -- particle vector ---------------------------------------- - -ParticleVector::ParticleVector(ParticleContainer *const parent, - const bool delParent) : - ParticleContainer(parent, delParent), - mIndexedElements() -{} - -ParticleVector::~ParticleVector() -{} - -void ParticleVector::setLocally(const int index, Particle *const particle) -{ - if (index < 0) - return; - - delLocally(index); - - if (mIndexedElements.size() <= static_cast<size_t>(index)) - mIndexedElements.resize(index + 1, nullptr); - - if (particle) - particle->disableAutoDelete(); - mIndexedElements[index] = particle; -} - -void ParticleVector::delLocally(const int index) -{ - if (index < 0) - return; - - if (mIndexedElements.size() <= static_cast<size_t>(index)) - return; - - Particle *const p = mIndexedElements[index]; - if (p) - { - mIndexedElements[index] = nullptr; - p->kill(); - } -} - -void ParticleVector::clearLocally() -{ - for (unsigned int i = 0; - i < static_cast<unsigned int>(mIndexedElements.size()); - i++) - { - delLocally(i); - } -} - -void ParticleVector::moveTo(const float x, const float y) -{ - ParticleContainer::moveTo(x, y); - - for (std::vector<Particle *>::iterator it = mIndexedElements.begin(); - it != mIndexedElements.end(); ++it) - { - Particle *const p = *it; - if (p) - { - p->moveTo(x, y); - - if (p->isExtinct()) - { - p->kill(); - *it = nullptr; - } - } - } -} |