1
This commit is contained in:
@ -54,10 +54,10 @@ export class AppDropZone {
|
||||
|
||||
/**
|
||||
* 生成放置区域
|
||||
* @param divisions 分割数量(必传)
|
||||
* @param divisions 可选的统一分割数量,如果不传则使用每个墙面自己的 divisions
|
||||
* @param config 配置参数(可选,如果不传则使用 setData 设置的数据)
|
||||
*/
|
||||
generateDropZones(divisions: number, config?: DropZoneConfig): PlacementZoneInfo[] {
|
||||
generateDropZones(divisions?: number, config?: DropZoneConfig): PlacementZoneInfo[] {
|
||||
const finalConfig = config || this.dropZoneConfig;
|
||||
|
||||
if (!finalConfig) {
|
||||
@ -65,12 +65,13 @@ export class AppDropZone {
|
||||
return [];
|
||||
}
|
||||
|
||||
// 为所有墙面设置分割数,同时保留其他配置属性
|
||||
// 为墙面设置分割数
|
||||
const configWithDivisions: DropZoneConfig = {
|
||||
...finalConfig, // 保留所有配置属性(color, alpha, thickness, showBorder, borderColor)
|
||||
walls: finalConfig.walls.map(wall => ({
|
||||
...wall,
|
||||
divisions: divisions
|
||||
// 如果传入了统一的 divisions,使用它;否则使用墙面自己的 divisions;都没有则默认为 1
|
||||
divisions: divisions !== undefined ? divisions : (wall.divisions || 1)
|
||||
}))
|
||||
};
|
||||
|
||||
|
||||
@ -260,6 +260,7 @@ export class KernelAdapter {
|
||||
endPoint: [number, number, number];
|
||||
height: number;
|
||||
offset?: number;
|
||||
divisions?: number;
|
||||
}>;
|
||||
color?: string;
|
||||
alpha?: number;
|
||||
@ -305,7 +306,8 @@ export class KernelAdapter {
|
||||
startPoint: new Vector3(startPoint[0], startPoint[1], startPoint[2]),
|
||||
endPoint: new Vector3(endPoint[0], endPoint[1], endPoint[2]),
|
||||
height: parseFloat(wall.height),
|
||||
offset: wall.offset ? parseFloat(wall.offset) : undefined
|
||||
offset: wall.offset ? parseFloat(wall.offset) : undefined,
|
||||
divisions: wall.divisions ? parseInt(wall.divisions) : undefined
|
||||
};
|
||||
}).filter((wall: any) => wall !== null) // 过滤掉无效的墙面
|
||||
};
|
||||
@ -314,11 +316,14 @@ export class KernelAdapter {
|
||||
},
|
||||
/**
|
||||
* 生成放置区域(使用已存储的配置数据)
|
||||
* @param divisions 分割数量
|
||||
* @param divisions 可选的统一分割数量,如果不传则使用每个墙面自己的 divisions
|
||||
* @example
|
||||
* // 使用每个墙面自己的分割数
|
||||
* kernel.dropZone.generateDropZones();
|
||||
* // 或者统一设置所有墙面的分割数
|
||||
* kernel.dropZone.generateDropZones(5);
|
||||
*/
|
||||
generateDropZones: (divisions: number): any[] => {
|
||||
generateDropZones: (divisions?: number): any[] => {
|
||||
return this.mainApp.appDropZone.generateDropZones(divisions);
|
||||
},
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user