From acea7b2e728787a0d83bbf83c8c1f042d2c32e7e Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Mon, 3 Jun 2024 10:15:45 +0800 Subject: + plugins project --- .../Modifiers/Interpolators/ColorInterpolator.cs | 13 +++++++++++ .../Modifiers/Interpolators/HueInterpolator.cs | 12 ++++++++++ .../Modifiers/Interpolators/Interpolator.cs | 26 ++++++++++++++++++++++ .../Modifiers/Interpolators/OpacityInterpolator.cs | 10 +++++++++ .../Interpolators/RotationInterpolator.cs | 10 +++++++++ .../Modifiers/Interpolators/ScaleInterpolator.cs | 12 ++++++++++ .../Modifiers/Interpolators/VelocityInterpolator | 12 ++++++++++ 7 files changed, 95 insertions(+) create mode 100644 Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/ColorInterpolator.cs create mode 100644 Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/HueInterpolator.cs create mode 100644 Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/Interpolator.cs create mode 100644 Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/OpacityInterpolator.cs create mode 100644 Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/RotationInterpolator.cs create mode 100644 Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/ScaleInterpolator.cs create mode 100644 Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/VelocityInterpolator (limited to 'Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators') diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/ColorInterpolator.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/ColorInterpolator.cs new file mode 100644 index 0000000..f94c689 --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/ColorInterpolator.cs @@ -0,0 +1,13 @@ +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + /// + /// Defines a modifier which interpolates the color of a particle over the course of its lifetime. + /// + public sealed class ColorInterpolator : Interpolator + { + public override unsafe void Update(float amount, Particle* particle) + { + particle->Color = HslColor.Lerp(StartValue, EndValue, amount); + } + } +} \ No newline at end of file diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/HueInterpolator.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/HueInterpolator.cs new file mode 100644 index 0000000..8b58a8e --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/HueInterpolator.cs @@ -0,0 +1,12 @@ +using MonoGame.Extended; + +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public class HueInterpolator : Interpolator + { + public override unsafe void Update(float amount, Particle* particle) + { + particle->Color = new HslColor((EndValue - StartValue) * amount + StartValue, particle->Color.S, particle->Color.L); + } + } +} \ No newline at end of file diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/Interpolator.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/Interpolator.cs new file mode 100644 index 0000000..0ec9866 --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/Interpolator.cs @@ -0,0 +1,26 @@ +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public abstract class Interpolator + { + protected Interpolator() + { + Name = GetType().Name; + } + + public string Name { get; set; } + public abstract unsafe void Update(float amount, Particle* particle); + } + + public abstract class Interpolator : Interpolator + { + /// + /// Gets or sets the intial value when the particles are created. + /// + public virtual T StartValue { get; set; } + + /// + /// Gets or sets the final value when the particles are retired. + /// + public virtual T EndValue { get; set; } + } +} \ No newline at end of file diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/OpacityInterpolator.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/OpacityInterpolator.cs new file mode 100644 index 0000000..0a26fcd --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/OpacityInterpolator.cs @@ -0,0 +1,10 @@ +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public class OpacityInterpolator : Interpolator + { + public override unsafe void Update(float amount, Particle* particle) + { + particle->Opacity = (EndValue - StartValue) * amount + StartValue; + } + } +} \ No newline at end of file diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/RotationInterpolator.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/RotationInterpolator.cs new file mode 100644 index 0000000..44a72de --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/RotationInterpolator.cs @@ -0,0 +1,10 @@ +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public class RotationInterpolator : Interpolator + { + public override unsafe void Update(float amount, Particle* particle) + { + particle->Rotation = (EndValue - StartValue) * amount + StartValue; + } + } +} \ No newline at end of file diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/ScaleInterpolator.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/ScaleInterpolator.cs new file mode 100644 index 0000000..aff9244 --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/ScaleInterpolator.cs @@ -0,0 +1,12 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public class ScaleInterpolator : Interpolator + { + public override unsafe void Update(float amount, Particle* particle) + { + particle->Scale = (EndValue - StartValue) * amount + StartValue; + } + } +} \ No newline at end of file diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/VelocityInterpolator b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/VelocityInterpolator new file mode 100644 index 0000000..bad04b1 --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Particles/Modifiers/Interpolators/VelocityInterpolator @@ -0,0 +1,12 @@ +using Microsoft.Xna.Framework; + +namespace MonoGame.Extended.Particles.Modifiers.Interpolators +{ + public class VelocityInterpolator : Interpolator + { + public override unsafe void Update(float amount, Particle* particle) + { + particle->Velocity = (EndValue - StartValue) * amount + StartValue; + } + } +} -- cgit v1.1-26-g67d0