import { Scene, Vector3 } from '@babylonjs/core'; import { AppPlacementWall, WallConfig, PlacementZoneInfo } from './AppPlacementWall'; /** * 放置区域配置 */ export interface DropZoneConfig { walls: WallConfig[]; // 墙面配置数组 color?: string; // 颜色(十六进制) alpha?: number; // 透明度 thickness?: number; // 厚度 showBorder?: boolean; // 是否显示边框 borderColor?: string; // 边框颜色 } /** * 放置区域管理类(使用新的墙面参数化方案) */ export class AppDropZone { private scene: Scene; private placementWall: AppPlacementWall; constructor(scene: Scene) { this.scene = scene; this.placementWall = new AppPlacementWall(scene); } /** * 生成放置区域 * @param config 配置参数 */ generateDropZones(config: DropZoneConfig): PlacementZoneInfo[] { return this.placementWall.generatePlacementAreas(config); } /** * 获取所有放置区域 */ getPlacementZones(): PlacementZoneInfo[] { return this.placementWall.getPlacementZones(); } /** * 根据墙面名称获取放置区域 */ getZonesByWall(wallName: string): PlacementZoneInfo[] { return this.placementWall.getZonesByWall(wallName); } /** * 根据索引获取特定放置区域 */ getZone(wallName: string, index: number): PlacementZoneInfo | undefined { return this.placementWall.getZone(wallName, index); } /** * 显示所有放置区域 */ show(): void { this.placementWall.show(); } /** * 隐藏所有放置区域 */ hide(): void { this.placementWall.hide(); } /** * 清除所有放置区域 */ clearAll(): void { this.placementWall.clearAll(); } /** * 销毁 */ dispose(): void { this.placementWall.dispose(); } }