import type { BasePlugin } from '../BasePlugin'; import * as THREE from 'three'; /** 插件数据 */ export type PluginData = { points: THREE.Vector3[]; }; /** 服务端数据 */ export type ServerData = { points: Array<{ x: number; y: number; z: number; }>; }; /** 插件配置 */ export interface Config { /** 线条数量 */ lineCount?: number; /** 线条间距 */ spacing?: number; /** 曲线分段数 */ divisions?: number; /** 线宽 */ lineWidth?: number; /** 线条颜色 */ color?: number; /** 流光速度(单位距离/秒,值越大速度越快) */ speed?: number; /** 流光过渡范围 */ range?: number; /** 波动幅度 */ waveAmp?: number; /** 波动频率 */ waveFreq?: number; /** 粒子数量 */ particleCount?: number; /** 粒子最大飘散距离 */ maxDistance?: number; /** 子网格 Y 轴偏移 */ subMeshYOffset?: number; /** 子网格宽度 */ subMeshWidth?: number; /** 子网格底色 */ subMeshColor?: number; /** 子网格基础透明度 */ subMeshOpacity?: number; } /** 插件初始化参数 */ export interface Params { config?: Partial; initialState?: Partial; /** 初始路径点 */ points?: THREE.Vector3[]; } /** 插件状态 */ export interface State extends BasePlugin.State { /** 插件是否启用 */ enabled: boolean; /** 插件整体是否可见 */ visible: boolean; /** 动画是否正在播放 */ playing: boolean; } /** 插件事件 */ export interface EventMap extends BasePlugin.EventMap { /** 动画开始播放 */ animationStart: () => void; /** 动画停止播放 */ animationStop: () => void; /** 路径点更新 */ pointsUpdate: (points: THREE.Vector3[]) => void; }