T? lerpIfNotNulls<T>(T? a, T? b, double t, T? Function(T, T, double) lerp) { if (a != null && b != null) return lerp(a, b, t); else return t < 0.5 ? a : b; }