Animating GCColor.

As seen in https://developer.apple.com/wwdc20/10614 light color could be changed and animated. I would like to know if it Is possible with the current state of GameController API to implement animation of .color property of GCController.light.
So I made a little code snippet that will animate the GCColor. Just add it to your class and call animate(to:,duration:,completion:) to animate the DualShock controller's color.
Code Block
var completions: [() -> ()] = []
func animate(to color: GCColor, duration: TimeInterval, _ completion: (() -> ())? = nil) {
    completions.removeAll()
    let currentColor = controller.light!.color
    let diff = (color.red - currentColor.red, color.green - currentColor.green, color.blue - currentColor.blue)
    let steps = Int(duration * 20)
    for i in 0..<steps {
        completions.append {
            self.controller.light?.color = GCColor(red: currentColor.red + Float(i) * diff.0 / Float(steps),
                                                   green: currentColor.green + Float(i) * diff.1 / Float(steps),
                                                   blue: currentColor.blue + Float(i) * diff.2 / Float(steps))
            self.completions.removeFirst()
            self.animate(steps: steps, duration: duration, completion)
        }
    }
    completions.first?()
}
func animate(steps: Int, duration: TimeInterval, _ completion: (() -> ())?) {
    DispatchQueue.main.asyncAfter(deadline: .now() + duration / Double(steps)) {
        if self.completions.isEmpty {
            completion?()
        } else {
            self.completions.first?()
        }
    }
}


So I've just made this into a gist!
Animating GCColor.
 
 
Q