summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/particle/particle.cpp16
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);