diff options
Diffstat (limited to 'src/particle/particle.cpp')
-rw-r--r-- | src/particle/particle.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/particle/particle.cpp b/src/particle/particle.cpp index ac9ba8394..f6b951004 100644 --- a/src/particle/particle.cpp +++ b/src/particle/particle.cpp @@ -25,6 +25,8 @@ #include "configuration.h" #include "logger.h" +#include "gui/viewport.h" + #include "particle/animationparticle.h" #include "particle/particleemitter.h" #include "particle/rotationalparticle.h" @@ -238,10 +240,24 @@ bool Particle::update() restrict2 // Update child particles + const int cameraX = viewport->getCameraX(); + const int cameraY = viewport->getCameraY(); + const float x1 = static_cast<float>(cameraX - 3000); + const float y1 = static_cast<float>(cameraY - 2000); + const float x2 = static_cast<float>(cameraX + 3000); + const float y2 = static_cast<float>(cameraY + 2000); + for (ParticleIterator p = mChildParticles.begin(), fp2 = mChildParticles.end(); p != fp2; ) { Particle *restrict const particle = *p; + const float posX = particle->mPos.x; + const float posY = particle->mPos.y; + if (posX < x1 || posX > x2 || posY < y1 || posY > y2) + { + ++p; + continue; + } // move particle with its parent if desired if (particle->mFollow) particle->moveBy(change); |