public void FadeColour(SRGBColour newColour, int duration = 0, EasingTypes easing = EasingTypes.None) { UpdateTransformsOfType(typeof(TransformColour)); Color4 startValue = Colour.Linear; if (transformationDelay == 0) { Transforms.RemoveAll(t => t is TransformColour); if (startValue == newColour) { return; } } else { startValue = (Transforms.FindLast(t => t is TransformColour) as TransformColour)?.EndValue ?? startValue; } double startTime = Clock != null ? Time.Current + transformationDelay : 0; TransformColour transform = new TransformColour { StartTime = startTime, EndTime = startTime + duration, StartValue = startValue, EndValue = newColour.Linear, Easing = easing }; if (Clock == null) { transform.UpdateTime(new FrameTimeInfo { Current = transform.EndTime }); transform.Apply(this); } else if (duration == 0 && transformationDelay == 0) { transform.UpdateTime(Time); transform.Apply(this); } else { Transforms.Add(transform); } }
public void FlashColour(SRGBColour flashColour, int duration, EasingTypes easing = EasingTypes.None) { Debug.Assert(transformationDelay == 0, @"FlashColour doesn't support Delay() currently"); Color4 startValue = (Transforms.FindLast(t => t is TransformColour) as TransformColour)?.EndValue ?? Colour.Linear; Transforms.RemoveAll(t => t is TransformColour); double startTime = Clock != null ? (Time.Current + transformationDelay) : 0; TransformColour transform = new TransformColour { StartTime = startTime, EndTime = startTime + duration, StartValue = flashColour.Linear, EndValue = startValue, Easing = easing }; if (Clock == null) { transform.UpdateTime(new FrameTimeInfo { Current = transform.EndTime }); transform.Apply(this); } else if (duration == 0 && transformationDelay == 0) { transform.UpdateTime(Time); transform.Apply(this); } else { Transforms.Add(transform); } }