import type { Five } from '@realsee/five'; import { BasePlugin } from '@realsee/five/plugins'; import type * as PluginType from './typing'; export declare class Controller extends BasePlugin.Controller { /** 当前使用的数据 */ data?: PluginType.PluginData; /** 插件当前状态 */ state: PluginType.State; /** config 的原始值 */ private _config; get config(): { lineCount: number; spacing: number; lineWidth: number; color: number; speed: number; range: number; waveAmp: number; waveFreq: number; particleCount: number; maxDistance: number; lineYOffset: number; subMeshWidth: number; subMeshColor: number; subMeshOpacity: number; subMeshMaxOpacity: number; subMeshSegmentInterval: number; subMeshHighlightWidth: number; }; private paths; private up; private updateState; constructor(five: Five, params?: PluginType.Params); /** * 加载服务端数据 */ load(serverData: PluginType.ServerData, state?: PluginType.State): Promise; /** * 添加路径 */ addPath(pathConfig: PluginType.PathConfig): boolean; /** * 移除路径 */ removePath(pathId: string): boolean; /** * 启用路径 */ enablePath(pathId: string): boolean; /** * 禁用路径 */ disablePath(pathId: string): boolean; /** * 显示路径 */ showPath(pathId: string): boolean; /** * 隐藏路径 */ hidePath(pathId: string): boolean; /** * 获取所有路径ID */ getPathIds(): string[]; /** * 获取路径配置 */ getPathConfig(pathId: string): PluginType.PathConfig | undefined; /** * 清空所有路径 */ clearAllPaths(): void; private getPositions; private createLines; private createParticleMaterial; private createParticles; /** * 创建子网格面片的几何体 */ private createSubMeshGeometry; /** * 创建流光的 alpha 贴图 * @param segmentCount - 分段数(流光数量) * @param highlightWidthInMeters - 单个高亮带的物理宽度(单位:米) * @param totalLength - 路径总长度(单位:米) * @param baseOpacity - 基础透明度(0-1) * @param maxOpacity - 最大透明度(0-1) * @returns DataTexture */ private createAlphaMapTexture; /** * 创建子网格面片的材质 */ private createSubMeshMaterial; /** * 将路径点投影到屏幕空间 */ private projectPointsToScreen; /** * 找到最近的屏幕外点 */ private findNearestOffscreenPoint; /** * 找到最远的屏幕外点(从终点反向搜索) */ private findFarestOffscreenPoint; private updatePathAnimation; /** * 启动指定路径的动画 * @param pathId - 路径ID * @param options - 配置选项 */ startPathAnimation(pathId: string, options?: { startPointIndex?: number; fromStart?: boolean; }): boolean; /** * 停止指定路径的动画 */ stopPathAnimation(pathId: string, saveProgress?: boolean): boolean; private _enable; private _disable; /** * 启用插件 */ enable(options?: BasePlugin.BaseOptions): void; /** * 禁用插件 */ disable(options?: BasePlugin.BaseOptions): void; /** * 显示插件 */ show(options?: BasePlugin.BaseOptions): void; /** * 隐藏插件 */ hide(options?: BasePlugin.BaseOptions): void; /** * 设置状态 */ setState(state: Partial, options?: BasePlugin.BaseOptions): void; /** * 播放动画 */ play(fromStart?: boolean): void; /** * 暂停动画 */ pause(): void; /** * 重置动画状态(不自动开始播放) */ reset(): void; highlightPath(pathId: string, highlight: boolean): void; /** * 更新指定路径的屏幕空间投影优化 * @param pathId - 路径ID,如果不提供则更新所有路径 */ updateScreenProjection(pathId?: string): void; private disposePathResources; /** * 销毁插件 */ dispose(): void; }