import { Rotor4Track, VecN } from '@holotope/core'; import { KinematicBody4 } from './kinematic-body4.js'; /** Authored R4 translation sampled on the physics clock. */ export type PositionSampler4 = (time: number) => VecN | ArrayLike; export interface KinematicTrackDriver4Options { readonly positionAt: PositionSampler4; readonly rotationTrack: Rotor4Track; /** Physical duration and animation-clock spacing of every segment. */ readonly fixedStep: number; /** Animation-clock time at the first segment boundary. Defaults to zero. */ readonly startTime?: number; } /** * Converts authored position and SO(4) tracks into fixed physical trajectory * segments without coupling animation sampling to a renderer or CCD event loop. * * Every accepted clock boundary is sampled once. The cached end pose of one * segment becomes the start pose of the next, while `KinematicBody4` supplies * the immutable suffix plans consumed by continuous collision detection. */ export declare class KinematicTrackDriver4 { readonly body: KinematicBody4; readonly fixedStep: number; private readonly positionAt; private readonly rotationTrack; private boundaryPose; private startClock; private endClock; private index; constructor(options: KinematicTrackDriver4Options); get segmentIndex(): number; get segmentStartTime(): number; get segmentEndTime(): number; /** * Installs the next fixed-clock segment after the current one is exhausted. * Sampling and trajectory construction complete before any public state is * changed, so malformed authored data cannot partially advance the driver. */ advanceSegment(): this; private samplePose; } //# sourceMappingURL=kinematic-track-driver4.d.ts.map