private void Start()
 {
     colorOverLifetime = particle.colorOverLifetime;
     if (modeOneGetColor && backColor)
     {
         gradientBack = colorOverLifetime.color;
     }
 }
 public void ActivateEffect()
 {
     if (!modeOneGetColor && backColor)
     {
         gradientBack = colorOverLifetime.color;
     }
     colorOverLifetime.color = gradient;
     if (backColor)
     {
         StartCoroutine(BackColor());
     }
 }
        private void SomethingChanged()
        {
            UnityEngine.Color color1 = ColorUtils.ToUnityColor(btnSetColor1.BackColor);
            UnityEngine.Color color2 = ColorUtils.ToUnityColor(btnSetColor2.BackColor);
            minMaxGradient = null;
            if (rbColor.Checked)
            {
                minMaxGradient       = new MinMaxGradient(ColorUtils.ToUnityColor(btnSetColor1.BackColor));
                minMaxGradient.mode  = ParticleSystemGradientMode.Color;
                minMaxGradient.color = color1;
            }
            else if (rbGradient.Checked)
            {
                minMaxGradient               = new MinMaxGradient();
                minMaxGradient.mode          = ParticleSystemGradientMode.Gradient;
                minMaxGradient.gradient      = new Gradient();
                minMaxGradient.gradient.mode = GradientMode.Blend;

                minMaxGradient.gradient.SetKeys(
                    new GradientColorKey[]
                    { new GradientColorKey(color1, 0.0f),
                      new GradientColorKey(color2, 1.0f) },

                    new GradientAlphaKey[] {
                    new GradientAlphaKey(0f, 0.0f),
                    new GradientAlphaKey(1f, 0.1f),
                    new GradientAlphaKey(1f, 0.9f),
                    new GradientAlphaKey(0f, 1.0f)
                }
                    );
            }
            else if (rbRandomColor.Checked)
            {
                minMaxGradient      = new MinMaxGradient();
                minMaxGradient.mode = ParticleSystemGradientMode.RandomColor;
            }
            else if (rbTwoColor.Checked)
            {
                minMaxGradient          = new MinMaxGradient(color1, color2);
                minMaxGradient.mode     = ParticleSystemGradientMode.TwoColors;
                minMaxGradient.colorMin = color1;
                minMaxGradient.colorMax = color2;
            }
            else if (rbTwoGradients.Checked)
            {
                minMaxGradient      = new MinMaxGradient();
                minMaxGradient.mode = ParticleSystemGradientMode.TwoGradients;
                // not supported yet.
            }

            ValueChanged(minMaxGradient);
        }
        /// <summary>
        /// Create VGO_PS_MinMaxGradient from MinMaxGradient.
        /// </summary>
        /// <param name="minMaxGradient"></param>
        /// <returns></returns>
        public static VGO_PS_MinMaxGradient CreateFrom(MinMaxGradient minMaxGradient)
        {
            switch (minMaxGradient.mode)
            {
            case ParticleSystemGradientMode.Color:
                return(new VGO_PS_MinMaxGradient()
                {
                    mode = ParticleSystemGradientMode.Color,
                    color = minMaxGradient.color.linear.ToArray(),
                });

            case ParticleSystemGradientMode.Gradient:
                return(new VGO_PS_MinMaxGradient()
                {
                    mode = ParticleSystemGradientMode.Gradient,
                    gradient = VgoGradientConverter.CreateFrom(minMaxGradient.gradient),
                });

            case ParticleSystemGradientMode.TwoColors:
                return(new VGO_PS_MinMaxGradient()
                {
                    mode = ParticleSystemGradientMode.TwoColors,
                    colorMin = minMaxGradient.colorMin.linear.ToArray(),
                    colorMax = minMaxGradient.colorMax.linear.ToArray(),
                });

            case ParticleSystemGradientMode.TwoGradients:
                return(new VGO_PS_MinMaxGradient()
                {
                    mode = ParticleSystemGradientMode.TwoGradients,
                    gradientMin = VgoGradientConverter.CreateFrom(minMaxGradient.gradientMin),
                    gradientMax = VgoGradientConverter.CreateFrom(minMaxGradient.gradientMax),
                });

            case ParticleSystemGradientMode.RandomColor:
                // @notice
                return(new VGO_PS_MinMaxGradient()
                {
                    mode = ParticleSystemGradientMode.RandomColor,
                    colorMin = minMaxGradient.colorMin.linear.ToArray(),
                    colorMax = minMaxGradient.colorMax.linear.ToArray(),
                    gradientMin = VgoGradientConverter.CreateFrom(minMaxGradient.gradientMin),
                    gradientMax = VgoGradientConverter.CreateFrom(minMaxGradient.gradientMax),
                });

            default:
                return(default);
            }
        }
Beispiel #5
0
 extern public void SetColor(ParticleSystemCustomData stream, MinMaxGradient gradient);