import type { ISceneLoaderProgressEvent } from "@babylonjs/core/Loading/sceneLoader"; import type { IFileRequest } from "@babylonjs/core/Misc/fileRequest"; import type { WebRequest } from "@babylonjs/core/Misc/webRequest"; import type { Scene } from "@babylonjs/core/scene"; import { MmdAnimation } from "./Animation/mmdAnimation"; import { VmdData, VmdObject } from "./Parser/vmdObject"; /** * VmdLoader is a loader that loads MMD animation data in VMD format * * VMD format is a binary format for MMD animation data */ export declare class VmdLoader { /** * Remove empty tracks for optimization when loading data (default: true) */ optimizeEmptyTracks: boolean; private readonly _scene; private _loggingEnabled; /** @internal */ log: (message: string) => void; /** @internal */ warn: (message: string) => void; /** @internal */ error: (message: string) => void; /** * Create a new VmdLoader * @param scene Scene for loading file */ constructor(scene: Scene); /** * Load MMD animation from VMD object * * If you put multiple motions, they are merged into one animation * * If two keyframes track and frame numbers are the same, the motion keyframe positioned later in the array is used * @param name Animation name * @param vmdObject VMD object or VMD object array * @param onLoad Callback function that is called when loading is complete * @param onProgress Callback function that is called while loading */ loadFromVmdObject(name: string, vmdObject: VmdObject | VmdObject[], onLoad: (animation: MmdAnimation) => void, onProgress?: (event: ISceneLoaderProgressEvent) => void): void; /** * Load MMD animation from VMD object asynchronously * * If you put multiple motions, they are merged into one animation * * If two keyframes track and frame numbers are the same, the motion keyframe positioned later in the array is used * @param name Animation name * @param vmdObject VMD object or VMD object array * @param onProgress Callback function that is called while loading * @returns Animation data */ loadFromVmdObjectAsync(name: string, vmdObject: VmdObject | VmdObject[], onProgress?: (event: ISceneLoaderProgressEvent) => void): Promise; /** * Load MMD animation data from VMD data * * If you put multiple motions, they are merged into one animation * * If two keyframes track and frame numbers are the same, the motion keyframe positioned later in the array is used * @param name Animation name * @param vmdData VMD data or array of VMD data * @param onLoad Callback function that is called when load is complete * @param onProgress Callback function that is called while loading */ loadFromVmdData(name: string, vmdData: VmdData | VmdData[], onLoad: (animation: MmdAnimation) => void, onProgress?: (event: ISceneLoaderProgressEvent) => void): void; /** * Load MMD animation data from VMD data asynchronously * * If you put multiple motions, they are merged into one animation * * If two keyframes track and frame numbers are the same, the motion keyframe positioned later in the array is used * @param name Animation name * @param vmdData VMD data or array of VMD data * @param onProgress Callback function that is called while loading * @returns Animation data */ loadFromVmdDataAsync(name: string, vmdData: VmdData | VmdData[], onProgress?: (event: ISceneLoaderProgressEvent) => void): Promise; /** * Load MMD animation data from VMD array buffer * * If you put multiple motions, they are merged into one animation * * If two keyframes track and frame numbers are the same, the motion keyframe positioned later in the array is used * @param name Animation name * @param buffer VMD array buffer or array of VMD array buffer * @param onLoad Callback function that is called when load is complete * @param onProgress Callback function that is called while loading * @param onError Callback function that is called when loading is failed */ loadFromBuffer(name: string, buffer: ArrayBufferLike | ArrayBufferLike[], onLoad: (animation: MmdAnimation) => void, onProgress?: (event: ISceneLoaderProgressEvent) => void, onError?: (event: Error) => void): void; /** * Load MMD animation data from VMD array buffer asynchronously * * If you put multiple motions, they are merged into one animation * * If two keyframes track and frame numbers are the same, the motion keyframe positioned later in the array is used * @param name Animation name * @param buffer VMD array buffer or array of VMD array buffer * @param onProgress Callback function that is called while loading * @returns Animation data */ loadFromBufferAsync(name: string, buffer: ArrayBufferLike | ArrayBufferLike[], onProgress?: (event: ISceneLoaderProgressEvent) => void): Promise; /** * Load MMD animation data from VMD file or URL * * If you put multiple motions, they are merged into one animation * * If two keyframes track and frame numbers are the same, the motion keyframe positioned later in the array is used * @param name Animation name * @param fileOrUrl VMD file or URL or array of VMD file or URL * @param onLoad Callback function that is called when load is complete * @param onProgress Callback function that is called while loading * @param onError Callback function that is called when loading is failed * @returns File request */ load(name: string, fileOrUrl: File | string | File[] | string[], onLoad: (animation: MmdAnimation) => void, onProgress?: (event: ISceneLoaderProgressEvent) => void, onError?: ((request?: WebRequest | undefined, exception?: Error | undefined) => void) | undefined): typeof fileOrUrl extends any[] ? IFileRequest[] : IFileRequest; /** * Load MMD animation data from VMD file or URL asynchronously * * If you put multiple motions, they are merged into one animation * * If two keyframes track and frame numbers are the same, the motion keyframe positioned later in the array is used * @param name Animation name * @param fileOrUrl VMD file or URL or array of VMD file or URL * @param onProgress Callback function that is called while loading * @returns Animation data */ loadAsync(name: string, fileOrUrl: File | string | File[] | string[], onProgress?: (event: ISceneLoaderProgressEvent) => void): Promise; /** * Enable or disable debug logging (default: false) */ get loggingEnabled(): boolean; set loggingEnabled(value: boolean); private _logEnabled; private _logDisabled; private _warnEnabled; private _warnDisabled; private _errorEnabled; private _errorDisabled; }