Browse Source

Update ParticleEmitter2D.cpp

Alan 9 years ago
parent
commit
7f222e5678
1 changed files with 22 additions and 16 deletions
  1. 22 16
      Source/Atomic/Atomic2D/ParticleEmitter2D.cpp

+ 22 - 16
Source/Atomic/Atomic2D/ParticleEmitter2D.cpp

@@ -48,7 +48,10 @@ ParticleEmitter2D::ParticleEmitter2D(Context* context) :
     emissionTime_(0.0f),
     emissionTime_(0.0f),
     emitParticleTime_(0.0f),
     emitParticleTime_(0.0f),
     boundingBoxMinPoint_(Vector3::ZERO),
     boundingBoxMinPoint_(Vector3::ZERO),
-    boundingBoxMaxPoint_(Vector3::ZERO)
+    boundingBoxMaxPoint_(Vector3::ZERO),
+    // ATOMIC BEGIN
+    emitting_(true)
+    // ATOMIC END
 {
 {
     sourceBatches_.Resize(1);
     sourceBatches_.Resize(1);
     sourceBatches_[0].owner_ = this;
     sourceBatches_[0].owner_ = this;
@@ -104,11 +107,6 @@ void ParticleEmitter2D::SetEffect(ParticleEffect2D* model)
     emissionTime_ = effect_->GetDuration();
     emissionTime_ = effect_->GetDuration();
 }
 }
 
 
-void ParticleEmitter2D::SetEmissionEnabled(bool enable)
-{
-    emissionEnabled_ = enable;
-}
-
 void ParticleEmitter2D::SetSprite(Sprite2D* sprite)
 void ParticleEmitter2D::SetSprite(Sprite2D* sprite)
 {
 {
     if (sprite == sprite_)
     if (sprite == sprite_)
@@ -141,11 +139,6 @@ void ParticleEmitter2D::SetMaxParticles(unsigned maxParticles)
     numParticles_ = Min(maxParticles, numParticles_);
     numParticles_ = Min(maxParticles, numParticles_);
 }
 }
 
 
-bool ParticleEmitter2D::GetEmissionEnabled() const
-{
-    return emissionEnabled_;
-}
-
 ParticleEffect2D* ParticleEmitter2D::GetEffect() const
 ParticleEffect2D* ParticleEmitter2D::GetEffect() const
 {
 {
     return effect_;
     return effect_;
@@ -306,8 +299,9 @@ void ParticleEmitter2D::Update(float timeStep)
             --numParticles_;
             --numParticles_;
         }
         }
     }
     }
-
-    if (emissionTime_ >= 0.0f)
+    // ATOMIC BEGIN
+    if (emissionTime_ > 0.0f)
+    // ATOMIC END
     {
     {
         float worldAngle = GetNode()->GetWorldRotation().RollAngle();
         float worldAngle = GetNode()->GetWorldRotation().RollAngle();
 
 
@@ -322,8 +316,7 @@ void ParticleEmitter2D::Update(float timeStep)
             emitParticleTime_ -= timeBetweenParticles;
             emitParticleTime_ -= timeBetweenParticles;
         }
         }
 
 
-        if (emissionTime_ > 0.0f)
-            emissionTime_ = Max(0.0f, emissionTime_ - timeStep);
+        emissionTime_ = Max(0.0f, emissionTime_ - timeStep);
     }
     }
 
 
     sourceBatchesDirty_ = true;
     sourceBatchesDirty_ = true;
@@ -333,7 +326,7 @@ void ParticleEmitter2D::Update(float timeStep)
 
 
 bool ParticleEmitter2D::EmitParticle(const Vector3& worldPosition, float worldAngle, float worldScale)
 bool ParticleEmitter2D::EmitParticle(const Vector3& worldPosition, float worldAngle, float worldScale)
 {
 {
-    if (!emissionEnabled_ || numParticles_ >= (unsigned)effect_->GetMaxParticles() || numParticles_ >= particles_.Size())
+    if (!emitting_ || numParticles_ >= (unsigned)effect_->GetMaxParticles() || numParticles_ >= particles_.Size())
         return false;
         return false;
 
 
     float lifespan = effect_->GetParticleLifeSpan() + effect_->GetParticleLifespanVariance() * Random(-1.0f, 1.0f);
     float lifespan = effect_->GetParticleLifeSpan() + effect_->GetParticleLifespanVariance() * Random(-1.0f, 1.0f);
@@ -441,4 +434,17 @@ void ParticleEmitter2D::UpdateParticle(Particle2D& particle, float timeStep, con
     boundingBoxMaxPoint_.z_ = Max(boundingBoxMaxPoint_.z_, particle.position_.z_);
     boundingBoxMaxPoint_.z_ = Max(boundingBoxMaxPoint_.z_, particle.position_.z_);
 }
 }
 
 
+// ATOMIC BEGIN
+
+void ParticleEmitter2D::SetEmitting(bool enable)
+{
+    emitting_ = enable;
+}
+bool ParticleEmitter2D::IsEmitting() const
+{
+    return emitting_;
+}
+
+// ATOMIC END
+
 }
 }