import {CssType, HtmlPanel} from '@deep/engine'; /** * 隧道数据接口 */ export interface ITunnelData { type: string; position: { x: number; y: number; z: number; }; depth: number; radius: number; } /** * 隧道面板类 */ export class TunnelHtmlPanel extends HtmlPanel { private tunnelData: ITunnelData; private onDeleteCallback: (() => void) | null = null; private uuid: string; /** * 构造函数 * @param data 隧道数据 * @param type CSS渲染类型 */ constructor(data: ITunnelData, type: CssType = CssType.CSS3DSprite) { super(type); this.tunnelData = data; this.uuid = this.getUniqueId(); this.initContent(); this.attachDeleteEvent(); } /** * 设置删除回调函数 * @param callback 删除时的回调函数 */ public onDelete(callback: () => void): void { this.onDeleteCallback = callback; } /** * 处理删除按钮点击 */ private handleDelete(): void { this.hide(); if (this.onDeleteCallback) { this.onDeleteCallback(); } } /** * 初始化内容结构 */ private initContent(): void { const content = `