public Curve(Keyframe[] keyframes) { if (keyframes == null) throw new ArgumentNullException(nameof(keyframes)); keys = keyframes.OrderBy(k => k.Time).ToArray(); empty = keys.Length == 0; if (!empty) { firstKey = keys[0]; lastKey = keys[keys.Length - 1]; } }
protected abstract float Interpolate(Keyframe left, Keyframe right, float delta);