public AnimatableVector3 Select(Func <Vector3, Vector3> selector) => IsAnimated ? new AnimatableVector3(KeyFrames.Select(kf => kf.CloneWithNewValue(selector(kf.Value)))) : new AnimatableVector3(selector(InitialValue));
public override string?ToString() => IsAnimated ? string.Join(" -> ", KeyFrames.Select(kf => kf.Value.ToString())) : InitialValue.ToString();
public new AnimatableVector3 WithTimeOffset(double timeOffset) => timeOffset != 0 || IsAnimated ? new AnimatableVector3(KeyFrames.Select(kf => kf.WithTimeOffset(timeOffset))) : this;