public static UnityEngine.Gradient GenerateConstGradient(uint[] colors, float[] colorRatios) { var gradient = new UnityEngine.Gradient(); gradient.mode = UnityEngine.GradientMode.Blend; UnityEngine.GradientColorKey[] gck = new UnityEngine.GradientColorKey[colors.Length]; UnityEngine.GradientAlphaKey[] gak = new UnityEngine.GradientAlphaKey[colors.Length]; for (int i = 0; i < colors.Length; ++i) { gck[i].time = colorRatios[i]; gck[i].color = ValueTypeUtil.GetColor(colors[i]); gak[i].time = colorRatios[i]; gak[i].alpha = 1.0f; } gradient.SetKeys(gck, gak); return(gradient); }
public void ApplyToUnityParticleSystem(UnityEngine.ParticleSystem ups, ParticleSystem ps) { var colorModule = ups.colorOverLifetime; var gradient = new UnityEngine.Gradient(); gradient.mode = UnityEngine.GradientMode.Blend; UnityEngine.GradientColorKey[] gck; if (justAlpha) { gck = new UnityEngine.GradientColorKey[2]; gck[0].time = 0.0f; gck[0].color = ps.Emitter.color.getValue(gck[0].time); gck[1].time = 1.0f; gck[1].color = ps.Emitter.color.getValue(gck[1].time); } else { gck = new UnityEngine.GradientColorKey[colors.Count]; for (int i = 0; i < colors.Count; ++i) { gck[i].time = colorRatios[i] / 255.0f; gck[i].color = ValueTypeUtil.GetColor(colors[i]); } } UnityEngine.GradientAlphaKey[] gak = new UnityEngine.GradientAlphaKey[alphaRatios.Count]; for (int i = 0; i < alphaRatios.Count; ++i) { gak[i].time = alphaRatios[i] / 255.0f; gak[i].alpha = alphas[i]; } gradient.SetKeys(gck, gak); colorModule.enabled = true; colorModule.color = new UnityEngine.ParticleSystem.MinMaxGradient(gradient); }
public UnityEngine.ParticleSystem.MinMaxGradient getGradient() { return(new UnityEngine.ParticleSystem.MinMaxGradient(ValueTypeUtil.GetColor(color0), ValueTypeUtil.GetColor(color1))); }