Merge pull request #756 from codymanix/ParticleEmitter_add_LayerDepth

add ability to configure layerdepth for autotriggered particleeffects
This commit is contained in:
Lucas Girouard-Stranks
2022-03-05 13:00:47 -05:00
committed by GitHub
2 changed files with 9 additions and 8 deletions
@@ -11,7 +11,7 @@ namespace MonoGame.Extended.Particles
{
public class ParticleEffect : Transform2, IDisposable
{
public ParticleEffect(string name = null, bool autoTrigger = true, float autoTriggerDelay = 0f)
public ParticleEffect(string name = null)
{
Name = name;
Emitters = new List<ParticleEmitter>();
@@ -74,10 +74,10 @@ namespace MonoGame.Extended.Particles
Emitters[i].Trigger(position, layerDepth);
}
public void Trigger(LineSegment line)
public void Trigger(LineSegment line, float layerDepth = 0)
{
for (var i = 0; i < Emitters.Count; i++)
Emitters[i].Trigger(line);
Emitters[i].Trigger(line, layerDepth);
}
public override string ToString()
@@ -85,4 +85,4 @@ namespace MonoGame.Extended.Particles
return Name;
}
}
}
}
@@ -53,6 +53,7 @@ namespace MonoGame.Extended.Particles
public Vector2 Offset { get; set; }
public List<Modifier> Modifiers { get; }
public Profile Profile { get; set; }
public float LayerDepth { get; set; }
public ParticleReleaseParameters Parameters { get; set; }
public TextureRegion2D TextureRegion { get; set; }
@@ -132,7 +133,7 @@ namespace MonoGame.Extended.Particles
if (_nextAutoTrigger <= 0)
{
Trigger(position);
Trigger(position, this.LayerDepth);
_nextAutoTrigger = _autoTriggerFrequency;
}
}
@@ -161,7 +162,7 @@ namespace MonoGame.Extended.Particles
Release(position + Offset, numToRelease, layerDepth);
}
public void Trigger(LineSegment line)
public void Trigger(LineSegment line, float layerDepth = 0)
{
var numToRelease = _random.Next(Parameters.Quantity);
var lineVector = line.ToVector();
@@ -169,11 +170,11 @@ namespace MonoGame.Extended.Particles
for (var i = 0; i < numToRelease; i++)
{
var offset = lineVector * _random.NextSingle();
Release(line.Origin + offset, 1);
Release(line.Origin + offset, 1, layerDepth);
}
}
private void Release(Vector2 position, int numToRelease, float layerDepth = 0)
private void Release(Vector2 position, int numToRelease, float layerDepth)
{
var iterator = Buffer.Release(numToRelease);