中化加油站项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
9.3 KiB

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