public void Add(Color color, ulong timeout) { Parts.Add(new ColorPathPart { Color = last, ColorEnd = color, Length = timeout, Part = 1.0 / timeout }); if (Parts.Count == 1) { curPart = Parts[0]; } last = color; Length += timeout; colorCalculated = false; }
public void Update() { if (Parts.Count == 0) { return; } if (Parts.Count == 1) { currentT++; if (currentT > curPart.Length) { currentT = 0; } colorCalculated = false; return; } ulong nextC = currentT + 1; if (current == Parts.Count - 1 && nextC > curPart.Length && !_loop) { return; } currentT = nextC; colorCalculated = false; if (currentT > curPart.Length) { currentT = 0; if (current == Parts.Count - 1 && _loop) { current = 0; } else if (current < Parts.Count - 1) { current++; } curPart = Parts[current]; } }