@realsee/five
Version:
Realsee Renderer SDK
168 lines (167 loc) • 4.47 kB
TypeScript
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<PluginType.State, PluginType.EventMap, PluginType.ServerData, PluginType.PluginData> {
/** 当前使用的数据 */
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<void>;
/**
* 添加路径
*/
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<PluginType.State>, 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;
}