UNPKG

@threlte/extras

Version:

Utilities, abstractions and plugins for your Threlte apps

41 lines (40 loc) 1.68 kB
import type { InstancedSpriteUserCtx } from './types.js'; export declare const useInstancedSprite: <T>() => InstancedSpriteUserCtx<T>; export type SpritesheetMetadata = { url: string; type: 'rowColumn' | 'frameSize'; width: number; height: number; animations: { name: string; frameRange: [number, number]; }[]; }[]; type SpriteMetaConfig = readonly Pick<SpritesheetMetadata[number], 'animations'>[]; export type UseSpriteMetaConfig<T extends SpriteMetaConfig> = T[number]['animations'][number]['name']; export declare const buildSpritesheet: { from: <T extends SpritesheetMetadata>(meta: Readonly<SpritesheetMetadata>) => { useInstancedSprite: () => InstancedSpriteUserCtx<UseSpriteMetaConfig<T>>; spritesheet: ReturnType<(options?: { makeSlimGeometry?: boolean; slimOptions?: { vertices: number; alphaThreshold: number; }; }) => Promise<{ spritesheet: import("@threejs-kit/instanced-sprite-mesh").SpritesheetFormat; texture: import("three").Texture; geometry?: import("@threejs-kit/instanced-sprite-mesh/dist/dietSprite/ClippedSpriteGeometry.js").ClippedSpriteGeometry; }>>; }; fromAseprite: (asepriteDataUrl: string, spriteImageUrl: string) => Promise<{ spritesheet: { frames: [x: number, y: number, w: number, h: number][]; animations: Record<string, [frameId: number, duration: number][]>; sheetSize: [w: number, h: number]; animationLengths: number[]; }; texture: import("three").Texture; }>; }; export {};