using System; [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; } /// /// Call type's constructor with container as parameter /// /// Must derive from KeyframeData /// Type must accept it as the only constructor parameter /// public static KeyframeData Serialize(Type type, ObjectContainer container) { return Activator.CreateInstance(type, new object[] { container }) as KeyframeData; } }