import { AnimationClip, Audio, Camera, Mesh, Object3D, SkinnedMesh } from '../../../src/Three'; export interface MMDAnimationHelperParameter { sync?: boolean; afterglow?: number; resetPhysicsOnLoop?: boolean; } export interface MMDAnimationHelperAddParameter { animation?: AnimationClip | AnimationClip[]; physics?: boolean; warmup?: number; unitStep?: number; maxStepNum?: number; gravity?: number; delayTime?: number; } export interface MMDAnimationHelperPoseParameter { resetPose?: boolean; ik?: boolean; grant?: boolean; } export class MMDAnimationHelper { constructor(params?: MMDAnimationHelperParameter); meshes: Mesh[]; camera: Camera | null; cameraTarget: Object3D; audio: Audio; audioManager: AudioManager; configuration: { sync: boolean; afterglow: number; resetPhysicsOnLoop: boolean; }; enabled: { animation: boolean; ik: boolean; grant: boolean; physics: boolean; cameraAnimation: boolean; }; onBeforePhysics: (mesh: SkinnedMesh) => void; sharedPhysics: boolean; masterPhysics: null; add(object: SkinnedMesh | Camera | Audio, params?: MMDAnimationHelperAddParameter): this; remove(object: SkinnedMesh | Camera | Audio): this; update(delta: number): this; pose(mesh: SkinnedMesh, vpd: object, params?: MMDAnimationHelperPoseParameter): this; enable(key: string, enabled: boolean): this; createGrantSolver(mesh: SkinnedMesh): GrantSolver; } export interface AudioManagerParameter { delayTime?: number; } export class AudioManager { constructor(audio: Audio, params?: AudioManagerParameter); audio: Audio; elapsedTime: number; currentTime: number; delayTime: number; audioDuration: number; duration: number; control(delta: number): this; } export class GrantSolver { constructor(mesh: SkinnedMesh, grants: object[]); mesh: SkinnedMesh; grants: object[]; update(): this; }