@realsee/five
Version:
Realsee Renderer SDK
130 lines (129 loc) • 4.02 kB
TypeScript
import type { BasePlugin } from '../BasePlugin';
import * as THREE from 'three';
/** 路径配置 */
export interface PathConfig {
/** 路径唯一标识 */
id: string;
/** 路径点 */
points: THREE.Vector3[];
/** 是否启用 */
enabled?: boolean;
/** 是否可见 */
visible?: boolean;
/** 线条颜色(可选,覆盖全局配置) */
color?: number;
/** 线宽(可选,覆盖全局配置) */
lineWidth?: number;
/** 子网格颜色(可选,覆盖全局配置) */
subMeshColor?: number;
/** 子网格宽度(可选,覆盖全局配置) */
subMeshWidth?: number;
/** 子网格透明度(可选,覆盖全局配置) */
subMeshOpacity?: number;
/** 流光速度(可选,覆盖全局配置,单位:米/秒) */
speed?: number;
/** 流光范围(可选,覆盖全局配置,单位:米,默认 5.0) */
range?: number;
/** 是否启用子网格(可选,默认 true) */
enableSubMesh?: boolean;
/** 是否启用路径线和粒子效果(可选,默认 true) */
enablePathline?: boolean;
}
/** 插件数据 */
export type PluginData = {
paths: Map<string, PathConfig>;
};
/** 服务端数据 */
export type ServerData = {
paths: Array<{
id: string;
points: Array<{
x: number;
y: number;
z: number;
}>;
enabled?: boolean;
visible?: boolean;
color?: number;
lineWidth?: number;
subMeshColor?: number;
subMeshWidth?: number;
subMeshOpacity?: number;
speed?: number;
range?: number;
enableSubMesh?: boolean;
enablePathline?: boolean;
}>;
};
/** 插件配置 */
export interface Config {
/** 线条数量 */
lineCount?: number;
/** 线条间距 */
spacing?: number;
/** 线宽 */
lineWidth?: number;
/** 线条颜色 */
color?: number;
/** 流光速度(单位距离/秒,值越大速度越快) */
speed?: number;
/** 流光过渡范围(单位:米,默认 5.0) */
range?: number;
/** 波动幅度 */
waveAmp?: number;
/** 波动频率 */
waveFreq?: number;
/** 粒子数量 */
particleCount?: number;
/** 粒子最大飘散距离 */
maxDistance?: number;
/** pathline Y 轴偏移(相对于 subMesh 向上偏移) */
lineYOffset?: number;
/** 子网格宽度 */
subMeshWidth?: number;
/** 子网格底色 */
subMeshColor?: number;
/** 子网格基础透明度(最小透明度) */
subMeshOpacity?: number;
/** 子网格最大透明度(流光中心的透明度,默认 1.0) */
subMeshMaxOpacity?: number;
/** 子网格流光分段间隔(单位:米,默认 3.0) */
subMeshSegmentInterval?: number;
/** 子网格流光高亮带宽度(单位:米,默认 1.5) */
subMeshHighlightWidth?: number;
}
/** 插件初始化参数 */
export interface Params {
config?: Partial<Config>;
initialState?: Partial<State>;
/** 初始路径配置列表 */
paths?: PathConfig[];
}
/** 插件状态 */
export interface State extends BasePlugin.State {
/** 插件是否启用 */
enabled: boolean;
/** 插件整体是否可见 */
visible: boolean;
/** 动画是否正在播放 */
playing: boolean;
}
/** 插件事件 */
export interface EventMap extends BasePlugin.EventMap<State, PluginData> {
/** 动画开始播放 */
animationStart: () => void;
/** 动画停止播放 */
animationStop: () => void;
/** 路径添加 */
pathAdd: (pathId: string, config: PathConfig) => void;
/** 路径移除 */
pathRemove: (pathId: string) => void;
/** 路径启用 */
pathEnable: (pathId: string) => void;
/** 路径禁用 */
pathDisable: (pathId: string) => void;
/** 路径显示 */
pathShow: (pathId: string) => void;
/** 路径隐藏 */
pathHide: (pathId: string) => void;
}