From 75e925f8113bda7b41424a45195fb9a99e7d944d Mon Sep 17 00:00:00 2001 From: liuxianghui <519646741@qq.com> Date: Wed, 3 Nov 2021 11:18:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E5=BB=BA=E8=AE=BE=E5=A4=87=E7=9A=84?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=B8=8E=E9=87=8A=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/info/model/model-info-building.ts | 26 ++++++++++++++++++- .../view/building-window/building-ui-item.ts | 2 ++ .../view/building-window/building-window.ts | 11 +++++++- .../view/facility-window/facility-window.ts | 5 +++- .../view/toolbar-window/toobar-window.ts | 9 ++++++- 5 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/app/babylon/model/info/model/model-info-building.ts b/src/app/babylon/model/info/model/model-info-building.ts index 5ca3014..c54124b 100644 --- a/src/app/babylon/model/info/model/model-info-building.ts +++ b/src/app/babylon/model/info/model/model-info-building.ts @@ -1,5 +1,6 @@ import { Observer, Scene, TransformNode } from "@babylonjs/core"; import { Button, Rectangle } from "@babylonjs/gui"; +import { ConfigManager } from "src/app/babylon/controller/config-manager"; import { ModelChangeType } from "src/app/babylon/controller/data-manager"; import { Event_ModelInfoChange } from "src/app/babylon/controller/event-manager/events/event-modelinfo-change"; import { InfoManager } from "src/app/babylon/controller/info-manager"; @@ -11,9 +12,11 @@ import { StatusManager } from "src/app/babylon/controller/status/status-manager" import { BabylonUIStyleTool } from "src/app/babylon/tool/babylon-ui-style-tool"; import { GizmoTool } from "src/app/babylon/tool/gizmo-tool"; import { TsTool } from "src/app/babylon/tool/ts-tool"; +import { FacilityWindow } from "src/app/babylon/view/facility-window/facility-window"; import { BuildingType } from "../../data/institution/building/building-data"; +import { FacilityPosType, ModelData_facility } from "../../data/model-data/model-data-facility"; import { ModelInfo_mark } from "../mark/model-info-mark"; import { ModelInfo } from "./model-info"; import { FacilityInfoByType, ModelInfo_facility } from "./model-info-facility"; @@ -152,6 +155,24 @@ export class ModelInfo_building extends ModelInfo { super.dispose(); } + /** + * 用户移除来自模型的设备 + */ + clearFacilityFromMesh() { + let infos = []; + for (let i = 0; i < this.facilityInfos.length; i++) { + if (ConfigManager.getPosType(this.facilityInfos[i].type) == FacilityPosType.In) { + for (let j = 0; j < this.facilityInfos[i].facilityInfo.length; j++) { + infos.push(this.facilityInfos[i].facilityInfo[j]); + } + } + } + for (let i = 0; i < infos.length; i++) { + FacilityWindow.instance.disposeFacility(infos[i]); + } + infos = []; + } + //释放所有设备 disposeAllFacility() { ModeManager.log('释放室内设备' + this.facilityInfos.length); @@ -197,7 +218,10 @@ export class ModelInfo_building extends ModelInfo { InfoManager.removeFacilityInfoToTypeList(modelInfo_facility, this.facilityInfos); } Event_ModelInfoChange.dispatch(modelInfo_facility, ModelChangeType.Remove); - SceneManager.destroyModel(modelInfo_facility); + if ((modelInfo_facility.modelData as ModelData_facility).posType == FacilityPosType.Out) { + SceneManager.destroyModel(modelInfo_facility); + } + } /** diff --git a/src/app/babylon/view/building-window/building-ui-item.ts b/src/app/babylon/view/building-window/building-ui-item.ts index 9b11ff5..a3b5c47 100644 --- a/src/app/babylon/view/building-window/building-ui-item.ts +++ b/src/app/babylon/view/building-window/building-ui-item.ts @@ -233,6 +233,8 @@ export class BuildingUIItem { */ clearFacilityFromMesh() { + this.buildingInfo.ModelInfo.clearFacilityFromMesh(); + } diff --git a/src/app/babylon/view/building-window/building-window.ts b/src/app/babylon/view/building-window/building-window.ts index 4985fcb..26062b7 100644 --- a/src/app/babylon/view/building-window/building-window.ts +++ b/src/app/babylon/view/building-window/building-window.ts @@ -522,12 +522,21 @@ export class BuildingWindow extends UIBase { public clearHomeLessFacilityData() { if (this.currentBuidngItem != null) { - let allNode = this.currentBuidngItem.clearFacilityFromMesh(); + this.currentBuidngItem.clearFacilityFromMesh(); } + } + /** + * 清空所有来自模型的设备 + */ + public clearAllFacilityFromMeshData() { + if (this.currentBuidngItem != null) { + this.currentBuidngItem.clearFacilityFromMesh(); + } } + /** * 获取并创建建筑上的消防设备数据(内部模式制作时,调用一次) */ diff --git a/src/app/babylon/view/facility-window/facility-window.ts b/src/app/babylon/view/facility-window/facility-window.ts index c286c68..727d0c8 100644 --- a/src/app/babylon/view/facility-window/facility-window.ts +++ b/src/app/babylon/view/facility-window/facility-window.ts @@ -381,7 +381,10 @@ export class FacilityWindow extends UIBase { } } - //移除设备(等待UI调用) + /** + * 用户移除设备(等待UI调用) + * @param modelInfo_facility + */ disposeFacility(modelInfo_facility: ModelInfo_facility) { let modelData = modelInfo_facility.modelData; diff --git a/src/app/babylon/view/toolbar-window/toobar-window.ts b/src/app/babylon/view/toolbar-window/toobar-window.ts index cfbe8f9..0f25a4b 100644 --- a/src/app/babylon/view/toolbar-window/toobar-window.ts +++ b/src/app/babylon/view/toolbar-window/toobar-window.ts @@ -90,12 +90,19 @@ export class ToolbarWindow extends UIBase { //#endregion /** - * 清空找不到具体模型的设备信息 + * 清空找不到具体模型的设备info和data */ clearHomeLessFacilityData() { BuildingWindow.instance.clearHomeLessFacilityData(); } + /** + * 清空所有来自模型的设备info和data + */ + clearAllFacilityDataFromMesh() { + BuildingWindow.instance.clearAllFacilityFromMeshData(); + } + /** * 获取并创建建筑上的消防设备数据 */