import { Quaternion, Vector3 } from "@babylonjs/core/Maths/math.vector"; import type { DeepImmutable } from "@babylonjs/core/types"; import type { MmdModelMetadata } from "../Loader/mmdModelMetadata"; import type { MmdRuntimeBone } from "./mmdRuntimeBone"; type RemoveUndefined = T extends undefined ? never : T; type AppendTransformMetadata = RemoveUndefined; /** * Gives the effect of being in a child parent relationship regardless of the bone hierarchy. Similar to Unity's Parent constraint */ export declare class AppendTransformSolver { readonly isLocal: boolean; /** * Whether to affect bone rotation */ readonly affectRotation: boolean; /** * Whether to affect bone position */ readonly affectPosition: boolean; /** * The ratio of the effect (can be negative) */ readonly ratio: number; /** * Affecting bones * * Similar to parent in bone hierarchy */ readonly targetBone: MmdRuntimeBone; /** * Append transformed position */ readonly appendPosition: Vector3; /** * Append transformed rotation */ readonly appendRotation: Quaternion; /** * Creates append transform solver * @param boneFlag bone flag of the bone to be affected * @param boneAppendTransformMetadata metadata of the bone to be affected * @param targetBone affecting bone */ constructor(boneFlag: number, boneAppendTransformMetadata: AppendTransformMetadata, targetBone: MmdRuntimeBone); private static readonly _IdentityQuaternion; private static readonly _TargetBoneWorldMatrix; /** * Updates the solver * @param animatedRotation rotation animation evaluation result with bone morphing applied * @param animatedPositionOffset position animation evaluation result with bone morphing applied */ update(animatedRotation: DeepImmutable, animatedPositionOffset: DeepImmutable): void; } export {};