import type { ILogger } from "../ILogger"; import type { IMmdModel } from "../IMmdModel"; import type { IMmdBindableModelAnimation } from "./IMmdBindableAnimation"; import type { IMmdRuntimeModelAnimation } from "./IMmdRuntimeAnimation"; import { MmdCompositeAnimation } from "./mmdCompositeAnimation"; /** * Mmd composite runtime model animation * * An object with mmd composite animation and model binding information */ export declare class MmdCompositeRuntimeModelAnimation implements IMmdRuntimeModelAnimation { /** * The animation data */ animation: MmdCompositeAnimation; private readonly _rigidBodyStates; private readonly _ikSolverStates; private readonly _morphController; private readonly _meshes; private readonly _runtimeAnimations; private _onSpanAdded; private _onSpanRemoved; private constructor(); private static readonly _RuntimeAnimationIdMap; private static _RuntimeAnimationIdCounter; private static _GetRuntimeAnimationId; private readonly _boneResultMap; private readonly _movableBoneResultMap; private readonly _rigidBodyResultMap; private readonly _morphResultMap; private readonly _ikSolverResultMap; private readonly _activeAnimationSpans; private readonly _activeRuntimeAnimations; private _activeRuntimeAnimationIds; private _lastActiveRuntimeAnimationIds; private readonly _boneRestPosition; private static readonly _IdentityQuaternion; /** * Update animation * @param frameTime frame time in 30fps */ animate(frameTime: number): void; /** * Induce material recompile * * This method must run once before the animation runs * * This method prevents frame drop during animation by inducing properties to be recompiled that are used in morph animation * @param updateMorphTarget Whether to update morph target manager numMaxInfluencers * @param logger Logger */ induceMaterialRecompile(updateMorphTarget: boolean, logger?: ILogger): void; /** * Dispose. remove all event listeners */ dispose(): void; /** * Bind animation to model and prepare material for morph animation * @param animation Animation to bind * @param model Bind target * @param retargetingMap Animation bone name to model bone name map * @param logger Logger * @return MmdCompositeRuntimeModelAnimation instance */ static Create(animation: MmdCompositeAnimation, model: IMmdModel, retargetingMap?: { [key: string]: string; }, logger?: ILogger): MmdCompositeRuntimeModelAnimation; } declare module "./mmdCompositeAnimation" { interface MmdCompositeAnimation extends IMmdBindableModelAnimation { } }