[System.Serializable]
public class KeyframeData
{
    public SerializableTransform Root;

    public KeyframeData() { }

    public KeyframeData(ObjectContainer container)
    {
        this.Root = new SerializableTransform(container.transform);
    }

    public virtual KeyframeData Clone()
    {
        var keyframe = new KeyframeData();
        keyframe.Root = new SerializableTransform(this.Root);
        return keyframe;
    }

    public virtual KeyframeData Lerp(KeyframeData target, float amount)
    {
        var copy = this.Clone();
        copy.Root = copy.Root.LerpWith(target.Root, amount);
        return copy;
    }
}