3093
3104
mOffsetY = mMap->getHeightOffset(mX, mY);
3107
void Being::removeAllItemsParticles()
3109
FOR_EACH (SpriteParticleInfoIter, it, mSpriteParticles)
3111
delete (*it).second;
3113
mSpriteParticles.clear();
3116
void Being::addItemParticles(const int id, const SpriteDisplay &display)
3118
SpriteParticleInfoIter it = mSpriteParticles.find(id);
3119
ParticleInfo *pi = nullptr;
3120
if (it == mSpriteParticles.end())
3122
pi = new ParticleInfo();
3123
mSpriteParticles[id] = pi;
3130
if (!pi->particles.empty())
3133
// setup particle effects
3134
if (Particle::enabled && particleEngine)
3136
FOR_EACH (StringVectCIter, itr, display.particles)
3138
Particle *const p = particleEngine->addEffect(*itr, 0, 0);
3140
pi->files.push_back(*itr);
3141
pi->particles.push_back(p);
3146
FOR_EACH (StringVectCIter, itr, display.particles)
3147
pi->files.push_back(*itr);
3151
void Being::removeItemParticles(const int id)
3153
SpriteParticleInfoIter it = mSpriteParticles.find(id);
3154
if (it == mSpriteParticles.end())
3156
ParticleInfo *const pi = (*it).second;
3159
FOR_EACH (std::vector<Particle*>::const_iterator, itp, pi->particles)
3160
mChildParticleEffects.removeLocally(*itp);
3163
mSpriteParticles.erase(it);
3166
void Being::recreateItemParticles()
3168
FOR_EACH (SpriteParticleInfoIter, it, mSpriteParticles)
3170
ParticleInfo *const pi = (*it).second;
3171
if (pi && !pi->files.empty())
3173
FOR_EACH (std::vector<Particle*>::const_iterator,
3176
mChildParticleEffects.removeLocally(*itp);
3179
FOR_EACH (std::vector<std::string>::const_iterator, str, pi->files)
3181
Particle *const p = particleEngine->addEffect(*str, 0, 0);
3183
pi->particles.push_back(p);