summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/LinearGravityModifier.cs
blob: e9ed216ea164bd09463389ca2a047320d6139d24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using Microsoft.Xna.Framework;

namespace MonoGame.Extended.Particles.Modifiers
{
    public class LinearGravityModifier : Modifier
    {
        public Vector2 Direction { get; set; }
        public float Strength { get; set; }

        public override unsafe void Update(float elapsedSeconds, ParticleBuffer.ParticleIterator iterator)
        {
            var vector = Direction*(Strength*elapsedSeconds);

            while (iterator.HasNext)
            {
                var particle = iterator.Next();
                particle->Velocity = new Vector2(
                    particle->Velocity.X + vector.X*particle->Mass,
                    particle->Velocity.Y + vector.Y*particle->Mass);
            }
        }
    }
}