internal TrimmedAnimatable <T> TrimAnimatable <T>(Animatable <T> animatable) where T : IEquatable <T> { if (animatable.IsAnimated) { var trimmedKeyFrames = Optimizer.RemoveRedundantKeyFrames(Optimizer.TrimKeyFrames(animatable, StartTime, EndTime)); return(new TrimmedAnimatable <T>( this, trimmedKeyFrames.Length == 0 ? animatable.InitialValue : trimmedKeyFrames[0].Value, trimmedKeyFrames)); } else { return(new TrimmedAnimatable <T>(this, animatable.InitialValue, animatable.KeyFrames)); } }