import { PropsWithChildren } from 'react'; import { TransformProps } from '../../three_transforms/interfaces'; /** * Base loader properties that all loaders share */ type BaseLoaderProps = { /** @dial-ignore **/ _key?: string; /** * Path or URL to the FBX file * @dial loader * @dial-dtype string */ src?: string; /** @dial-ignore **/ text?: string; /** @dial-ignore **/ assets?: object; /** @dial-ignore **/ buff?: ArrayBuffer; /** * Material file URL for OBJ loader * @dial loader * @dial-dtype string **/ mtl?: string; /** * Hide the loaded object * @dial visibility * @dial-dtype boolean **/ hide?: boolean; /** @dial-ignore **/ encoding?: string; /** @dial-ignore **/ onLoad?: () => void | string; /** * Play animations * @dial animation * @dial-cols 2 * @dial-dtype boolean * @dial-default true */ playAnimation?: boolean; /** * Animation clip index to play * @dial animation * @dial-dtype int * @dial-default 0 * @dial-min 0 */ animationIndex?: number; /** * Animation playback speed * @dial animation * @dial-dtype number * @dial-default 1.0 * @dial-min 0.01 */ animationSpeed?: number; /** * Animation track data (e.g., from fbx_joint_animation_tracks.py) * @dial-ignore */ animation?: { name: string; fps: number; duration: number; tracks: Array<{ name: string; type: 'vector3' | 'quaternion'; times: number[]; values: number[]; }>; }; }; /** * Generic LoaderContainer Props that extends view-specific props * @template ViewProps - The props type of the corresponding view component */ export type LoaderContainerProps> = PropsWithChildren>; export {};