import { Sprite, CatmullRomCurve3 } from 'three'; import { BaseJson } from '../../component/type'; import { GeometryPathJson } from '../../util/render/type'; import { SpriteMaterialJson } from '../sprite/type'; interface ParticleScope { x: { min: number; max: number; }; y: { min: number; max: number; }; z: { min: number; max: number; }; } interface ParticleJson extends BaseJson { type: 'Particle'; material: SpriteMaterialJson; path: GeometryPathJson | null; tension: number; count: number; random: { location: ParticleScope; rotation: ParticleScope; scale: ParticleScope; }; size: { min: number; max: number; }; speed: { min: number; max: number; }; start: { min: number; max: number; }; } interface SpriteCurve { sprite: Sprite; curve: CatmullRomCurve3; start: number; step: number; } export { ParticleJson, ParticleScope, SpriteCurve };