|
@@ -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
|
|
|
|
|
+
|
|
|
}
|
|
}
|