void ParticleSystem3D::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) { if (getAliveParticleCount() && _render) { _render->render(renderer, transform, this); } }
void PUParticleSystem3D::update(float delta) { if (_isMarkedForEmission) return; if (_state != State::RUNNING){ if (_state == State::PAUSE) return; else if (_state == State::STOP && getAliveParticleCount() <= 0){ forceStopParticleSystem(); return; } } forceUpdate(delta); }
void PUParticleSystem3D::draw( Renderer *renderer, const Mat4 &transform, uint32_t flags ) { if (getAliveParticleCount() <= 0) return; if (_render) _render->render(renderer, transform, this); if (!_emittedSystemParticlePool.empty()) { for (auto iter : _emittedSystemParticlePool){ PUParticle3D *particle = static_cast<PUParticle3D *>(iter.second.getFirst()); while (particle) { static_cast<PUParticleSystem3D *>(particle->particleEntityPtr)->draw(renderer, transform, flags); particle = static_cast<PUParticle3D *>(iter.second.getNext()); } } } }