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
202 lines
9.3 KiB
4 years ago
|
|
||
|
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;
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|