Browse Source

内建设备的获取与释放

dev
刘向辉 3 years ago
parent
commit
75e925f811
  1. 24
      src/app/babylon/model/info/model/model-info-building.ts
  2. 2
      src/app/babylon/view/building-window/building-ui-item.ts
  3. 11
      src/app/babylon/view/building-window/building-window.ts
  4. 5
      src/app/babylon/view/facility-window/facility-window.ts
  5. 9
      src/app/babylon/view/toolbar-window/toobar-window.ts

24
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,9 +218,12 @@ export class ModelInfo_building extends ModelInfo {
InfoManager.removeFacilityInfoToTypeList(modelInfo_facility, this.facilityInfos);
}
Event_ModelInfoChange.dispatch(modelInfo_facility, ModelChangeType.Remove);
if ((modelInfo_facility.modelData as ModelData_facility).posType == FacilityPosType.Out) {
SceneManager.destroyModel(modelInfo_facility);
}
}
/**
*
* @param enable true

2
src/app/babylon/view/building-window/building-ui-item.ts

@ -233,6 +233,8 @@ export class BuildingUIItem {
*/
clearFacilityFromMesh() {
this.buildingInfo.ModelInfo.clearFacilityFromMesh();
}

11
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();
}
}
/**
* ()
*/

5
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;

9
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();
}
/**
*
*/

Loading…
Cancel
Save