private void RefreshCurve()
        {
            FloatCurve fCurve = new FloatCurve();

            fCurve.Keyframes.Clear();

            foreach (var colorKey in this.Curve.Keyframes)
            {
                var color     = colorKey.Value;
                var intensity = (color.R + color.G + color.B) / (3 * 255f);
                fCurve.AddKey(colorKey.Lerp, MathHelper.Lerp(this.MinValue, this.MaxValue, intensity));
            }

            switch (this.ParticlePropertyTarget)
            {
            case CurveEnum.Size:
                this.particles.SizeAnimated = true;
                this.particles.SizeOverLife = fCurve;
                break;

            case CurveEnum.Velocity:
                this.particles.VelocityAnimated  = true;
                this.particles.VelocityOverLifeX = fCurve;
                this.particles.VelocityOverLifeY = fCurve;
                this.particles.VelocityOverLifeZ = fCurve;
                break;

            case CurveEnum.VelocityX:
                this.particles.VelocityAnimated  = true;
                this.particles.VelocityOverLifeX = fCurve;
                break;

            case CurveEnum.VeloxityY:
                this.particles.VelocityAnimated  = true;
                this.particles.VelocityOverLifeY = fCurve;
                break;

            case CurveEnum.VelocityZ:
                this.particles.VelocityAnimated  = true;
                this.particles.VelocityOverLifeZ = fCurve;
                break;
            }
        }