Dagamer131 Posted August 26, 2017 Share Posted August 26, 2017 (edited) Hey I was wondering how to get the rainbow paint fade(shown here: ) as opposed to the regular random loop(shown here: ) Edited August 26, 2017 by Dagamer131 Link to comment Share on other sites More sharing options...
CamxxCore Posted August 26, 2017 Share Posted August 26, 2017 You would want to use a linear interpolation (lerp) function. A quick google search should find you what you are looking for. Link to comment Share on other sites More sharing options...
Dagamer131 Posted August 27, 2017 Author Share Posted August 27, 2017 could you link an example? I cant find a good one Link to comment Share on other sites More sharing options...
CamxxCore Posted August 29, 2017 Share Posted August 29, 2017 (edited) Here is a (C#) example. This is just one of many ways to do it. The most important function is "Lerp" which allows you to smoothly transition between color values. using System;using System.Drawing;using GTA;namespace ColorInterpolator{ public static class Extensions { private static double Lerp(double d1, double d2, double d) { return d1 + (d2 - d1) * d; } public static Color FadeTo(this Color color1, Color color2, double d) { double r = Lerp(color1.R, color2.R, d); double g = Lerp(color1.G, color2.G, d); double b = Lerp(color1.B, color2.B, d); return Color.FromArgb((int)r, (int)g, (int)b); } } public class ScriptMain : Script { public ScriptMain() { Tick += RunFrame; } /// <summary> /// Total time to fade between colors in millseconds /// </summary> private readonly int FadeTime = 700; private static readonly Color[] ColorList = { Color.Red, Color.Green, Color.Blue }; private float fadeAmount; private int colorIndex; private Color startColor = ColorList[0], endColor = ColorList[1]; private Color currentColor; void RunFrame(object sender, EventArgs e) { if (fadeAmount < 1.0f) { fadeAmount += Game.LastFrameTime * (1000.0f / FadeTime); if (fadeAmount < 0.0f) fadeAmount = 0.0f; else if (fadeAmount > 1.0f) fadeAmount = 1.0f; currentColor = startColor.FadeTo(endColor, fadeAmount); } else { colorIndex++; colorIndex %= ColorList.Length; startColor = currentColor; endColor = ColorList[colorIndex]; fadeAmount = 0.0f; } } }} You could add any amount of colors to the ColorList and they would be added to the fade sequence. You can adjust the 'FadeTime' to make it fade faster (or slower). Edited August 29, 2017 by CamxxCore Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now