/** * BoneSystem.ts * * Skeletal bone hierarchy: bind pose, joint transforms, * world-space chain computation, and pose application. * * @module animation */ /** Local tuple for bone world positions — keeps BoneSystem independent of @holoscript/core object-style Vector3. */ type Vec3 = [number, number, number]; export interface BoneTransform { tx: number; ty: number; tz: number; rx: number; ry: number; rz: number; rw: number; sx: number; sy: number; sz: number; } export interface Bone { id: string; name: string; parentId: string | null; local: BoneTransform; world: BoneTransform; bindInverse: BoneTransform; childIds: string[]; } export declare class BoneSystem { private bones; private roots; private dirty; addBone(id: string, name: string, parentId: string | null, local?: Partial): void; getBone(id: string): Bone | undefined; getBoneCount(): number; getRoots(): string[]; setLocalTransform(id: string, transform: Partial): void; /** * Apply a batch of local transforms and update the hierarchy as one * transaction. A validation/composition failure restores both local and * world state so callers never observe a half-applied pose. */ applyLocalTransforms(transforms: ReadonlyMap>): void; updateWorldTransforms(): void; private updateBoneChain; captureBindPose(): void; getSkinningMatrix(id: string): BoneTransform | null; private combineTransforms; private invertTransform; private normalizeTransformRotation; private normalizeQuaternion; private multiplyQuaternions; private rotateVector; getWorldPosition(id: string): Vec3 | null; getChain(leafId: string): string[]; } export {}; //# sourceMappingURL=BoneSystem.d.ts.map