import { SceneManager } from "../../controller/scene-manager"; import { PropertyData_Base_IMG } from "../../model/data/institution/facility/property-data/base/property-data-base-img"; import { PropertyData_Base_SBJHQ } from "../../model/data/institution/facility/property-data/base/property-data-base-sbjhq"; import { PropertyData_Base_XFB } from "../../model/data/institution/facility/property-data/base/property-data-base-xfb"; import { PropertyData_Base_XHS } from "../../model/data/institution/facility/property-data/base/property-data-base-xhs"; import { PropertyData_DWBZ } from "../../model/data/institution/facility/property-data/indoor/property-data-dwbz"; import { PropertyData_FHFQ } from "../../model/data/institution/facility/property-data/indoor/property-data-fhfq"; import { PropertyData_SSLT } from "../../model/data/institution/facility/property-data/indoor/property-data-sslt"; import { PropertyData_XFDT } from "../../model/data/institution/facility/property-data/indoor/property-data-xfdt"; import { PropertyData_ZDQY } from "../../model/data/institution/facility/property-data/indoor/property-data-zdqy"; import { PropertyData_AQCK } from "../../model/data/institution/facility/property-data/outdoor/property-data-aqck"; import { PropertyData_GD } from "../../model/data/institution/facility/property-data/outdoor/property-data-gd"; import { PropertyData_PL } from "../../model/data/institution/facility/property-data/outdoor/property-data-pl"; import { PropertyData_Q } from "../../model/data/institution/facility/property-data/outdoor/property-data-q"; import { PropertyData_Base } from "../../model/data/institution/facility/property-data/property-data-base"; import { FacilityType, ModelData_facility } from "../../model/data/model-data/model-data-facility"; import { ModelInfo_facility } from "../../model/info/model/model-info-facility"; import { BabylonTool } from "../../tool/babylon-tool"; import { GizmoTool } from "../../tool/gizmo-tool"; import { TsTool } from "../../tool/ts-tool"; import { FacilityInfoInSceneWindow } from "./facilityinfoinscene-window"; //单个场景中的设备 UI item export class FacilityInfoUIItem { modelInfo: ModelInfo_facility; facilityInfoInSceneWindow: FacilityInfoInSceneWindow; isSelect: boolean = false; isChecked: boolean = false; //是否 选中 // facilityBtn: Button; constructor(modelInfo: ModelInfo_facility, facilityInfoInSceneWindow: FacilityInfoInSceneWindow) { this.modelInfo = modelInfo; this.facilityInfoInSceneWindow = facilityInfoInSceneWindow; this.initUI(); } //#region 前端对接 l_name = null; /** * 获取设备名 */ getName(): string { return this.modelInfo.modelData.name; } /** * 设备类型 */ getType(): FacilityType { return (this.modelInfo.modelData as ModelData_facility).facilityType; } /** * 设备ID */ getID(): string { return this.modelInfo.key; } /** * 获取 设备属性 */ getPropertyData() { let facilityData // = (this.modelInfo.modelData as ModelData_facility).propertyData as any; if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.AQCK) { //安全出口 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_AQCK; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DSXHS || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DXXHS || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.SZDSXHS || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.SZDXXHS) { //消火栓 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Base_XHS; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DSSBJHQ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DXSBJHQ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.QBSBJHQ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DGNSBJHQ) { //水泵接合器 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Base_SBJHQ; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.GD) { //高度 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_GD; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.PL) { //毗邻 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_PL; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.TPBZ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.XKS || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.BF || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.SX) { //图片标注,消控室,泵房,水箱 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Base_IMG; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.JJQ || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.JTQ) { //集结区,禁停区 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Q; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.LSXFB || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.WSXFB || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.CYXFB) { //消防泵 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_Base_XFB; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.FHFQ) { //防火分区 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_FHFQ; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.FHM) { //防火门 } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.FHJL) { //防火卷帘 } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.SSLT) { //疏散楼梯 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_SSLT; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.XFDT) { //消防电梯 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_XFDT; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.PTDT) { //普通电梯 facilityData = null } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.ZDQY) { //重点区域 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_ZDQY; } else if ((this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.WXY || (this.modelInfo.modelData as ModelData_facility).facilityType == FacilityType.DWBZ) { //危险源,点位标注 facilityData = (this.modelInfo.modelData as ModelData_facility).propertyData as PropertyData_DWBZ; } else { //未匹配到的 facilityData = null } return facilityData } /** * 粘贴属性 * @param propertyData */ pasteProperty(propertyData: PropertyData_Base) { let facilityData = this.modelInfo.modelData as ModelData_facility; let key = facilityData.propertyData.key; facilityData.propertyData = propertyData.clone(key); console.log("粘贴属性"); } /** * 询问删除 * @param ask true表示询问,false表示不询问 */ askDelete(ask: boolean = true) { this.modelInfo.askDelete(this.modelInfo, ask); } //#endregion initUI() { } dispose() { TsTool.arrayRemove(this.facilityInfoInSceneWindow.facilityInfoUIItemes, this); } onSelect(select: boolean) { this.isSelect = select; this.modelInfo.setSelectEnable(select); if (select) { // console.log("选中设备==" + this.modelInfo.key); GizmoTool.onPickMeshInfoObservable.notifyObservers(this.modelInfo); this.facilityInfoInSceneWindow.selectFacilityItemToThree([this], true); this.modelInfo.setIconEnable(select); } else { this.facilityInfoInSceneWindow.selectFacilityItemToThree([this], false); if (!this.facilityInfoInSceneWindow.getFacilityUIShowType(this.getType())) { this.modelInfo.setIconEnable(select); } } } /** * 相机聚焦 */ lookAt() { if (!this.canLookAt()) { return; } let size = null; if (this.modelInfo.gdInfo != null) { size = this.modelInfo.gdInfo.myPath[1].y * 3; } if (this.modelInfo.areaInfo != null) { //计算多边形size } BabylonTool.changeCameraTarget(SceneManager.Instance.defaultCamera, this.modelInfo.modelBox, true, size); } /** * 是否可以聚焦 */ canLookAt(): boolean { let result = this.modelInfo != null && this.modelInfo.modelBox != null; return result; } }