using System; using OpenTK; using SM.Base.Drawing.Particles; using SM.Base.Utility; using SM2D.Types; namespace SM2D.Drawing { /// /// Creates particles. /// public class DrawParticles : ParticleDrawingBasis { /// public override Func MovementCalculation { get; set; } = ParticleMovement.Default2D; /// /// The direction the particles should travel. /// public Vector2? Direction; /// public DrawParticles(TimeSpan duration) : base(duration) { } /// protected override ParticleStruct CreateObject(int index) { return new ParticleStruct() { Matrix = Matrix4.CreateScale(1), Direction = Direction.GetValueOrDefault(new Vector2(Randomize.GetFloat(-1, 1), Randomize.GetFloat(-1, 1))), Speed = Randomize.GetFloat(MaxSpeed) }; } /// protected override Matrix4 CreateMatrix(ParticleStruct Struct, Vector2 direction) { return Struct.Matrix * Matrix4.CreateTranslation(direction.X, direction.Y, 0); } } }