From 4f276b2cf2ae45928eeab9b96e31343c45868afb Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 3 Mar 2016 20:17:11 +0300 Subject: Dont update particles located in long distance from screen. --- src/particle/particle.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/particle/particle.cpp') 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(cameraX - 3000); + const float y1 = static_cast(cameraY - 2000); + const float x2 = static_cast(cameraX + 3000); + const float y2 = static_cast(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); -- cgit v1.2.3-70-g09d2