Interface Animation<T>

    interface Animation<T = unknown> {
        "[dispose]": () => void;
        canInterpolate: () => boolean;
        createAtTime: (value: T, time: Rational, index?: number) => void;
        createView: (
            getTime: () => Rational,
        ) => {
            "[dispose]": () => void;
            dispose: () => void;
            getValue: () => T | undefined;
        };
        delete: (index: number) => void;
        dispose: () => void;
        flags: number;
        getKeyframeAt: (time: Schema.Rational) => Keyframe<T> | undefined;
        getKeyframeFor: (time: Schema.Rational) => Keyframe<T> | undefined;
        indexOfKeyframeAt: (time: Schema.Rational) => number;
        insert: (index: number, keyframe: Keyframe<T>) => void;
        keyframes: Keyframe<T>[];
        pushInitial: (keyframe: Keyframe<T>) => void;
        splitAt: (
            time: Rational,
        ) =>
            | {
                isOnKeyframe: boolean;
                sliceTo: Keyframe<T>
                | undefined;
                sliceToIndex: number;
                splitValue: T;
            }
            | undefined;
        toJSON: () => Schema.Animation<T> | undefined;
        update: <K extends keyof Keyframe<T>>(
            index: number,
            key: K,
            value: Keyframe<T>[K],
        ) => void;
        updateOrCreateAtTime: (value: T, time: Rational, index?: number) => void;
    }

    Type Parameters

    • T = unknown
    Index
    "[dispose]": () => void
    canInterpolate: () => boolean
    createAtTime: (value: T, time: Rational, index?: number) => void
    createView: (
        getTime: () => Rational,
    ) => {
        "[dispose]": () => void;
        dispose: () => void;
        getValue: () => T | undefined;
    }
    delete: (index: number) => void
    dispose: () => void
    flags: number
    getKeyframeAt: (time: Schema.Rational) => Keyframe<T> | undefined
    getKeyframeFor: (time: Schema.Rational) => Keyframe<T> | undefined
    indexOfKeyframeAt: (time: Schema.Rational) => number
    insert: (index: number, keyframe: Keyframe<T>) => void
    keyframes: Keyframe<T>[]
    pushInitial: (keyframe: Keyframe<T>) => void
    splitAt: (
        time: Rational,
    ) =>
        | {
            isOnKeyframe: boolean;
            sliceTo: Keyframe<T>
            | undefined;
            sliceToIndex: number;
            splitValue: T;
        }
        | undefined
    toJSON: () => Schema.Animation<T> | undefined
    update: <K extends keyof Keyframe<T>>(
        index: number,
        key: K,
        value: Keyframe<T>[K],
    ) => void
    updateOrCreateAtTime: (value: T, time: Rational, index?: number) => void