import type { Vector3 } from '@holoscript/core'; type CompatVec3 = { x: number; y: number; z: number; 0: number; 1: number; 2: number; }; /** * RagdollController.ts * * Ragdoll physics: bone chain definition, joint limits, * active/ragdoll blending, and impulse application. * * @module physics */ export interface RagdollBone { id: string; name: string; parentId: string | null; position: CompatVec3; rotation: CompatVec3; velocity: CompatVec3; angularVelocity: CompatVec3; mass: number; length: number; jointLimits: { min: CompatVec3; max: CompatVec3; }; } export interface RagdollConfig { gravity: number; damping: number; iterations: number; } export type RagdollState = 'active' | 'ragdoll' | 'blending'; export declare class RagdollController { private bones; private rootBone; private state; private blendFactor; private blendSpeed; private config; constructor(config?: Partial); addBone(name: string, parentId: string | null, mass: number, length: number, limits?: { min: Vector3; max: Vector3; }): RagdollBone; removeBone(name: string): boolean; activate(): void; goRagdoll(): void; startBlend(toRagdoll?: boolean): void; getState(): RagdollState; getBlendFactor(): number; update(dt: number): void; applyImpulse(boneId: string, impulse: Vector3): void; getBone(id: string): RagdollBone | undefined; getBoneCount(): number; getRootBone(): RagdollBone | undefined; getChildren(boneId: string): RagdollBone[]; } export {}; //# sourceMappingURL=RagdollController.d.ts.map