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.
79 lines
2.3 KiB
79 lines
2.3 KiB
4 years ago
|
import { Type } from "class-transformer";
|
||
|
import { TsTool } from "src/assets/babylon/tool/ts-tool";
|
||
|
|
||
|
import { ModelData } from "./model-data";
|
||
|
import { FacilityType, ModelData_facility } from "./model-data-facility";
|
||
|
|
||
|
//模型编辑信息(外观、环境、室内分层)
|
||
|
export class ModelEditData {
|
||
|
index: number = 0; //楼层、顺序用于ui上排序
|
||
|
isRefugeFloor: boolean = false;//避难层
|
||
|
@Type(() => ModelData)
|
||
|
modelData: ModelData; //模型信息
|
||
|
@Type(() => FacilityDatasByType)
|
||
|
facilities: FacilityDatasByType[] = []; //含有哪些设备
|
||
|
|
||
|
constructor() {
|
||
|
// this.belongToBuilding = belongToBuilding;
|
||
|
this.modelData = new ModelData();
|
||
|
this.index = 0;
|
||
|
}
|
||
|
//添加设备
|
||
|
addFacility(modelData_facility: ModelData_facility) {
|
||
|
|
||
|
let facility = this.getFacilitiesByType(modelData_facility.facilityType);
|
||
|
|
||
|
if (facility == null) {
|
||
|
let newDataByType = new FacilityDatasByType(modelData_facility.facilityType);
|
||
|
this.facilities.push(newDataByType);
|
||
|
facility = newDataByType.facilities;
|
||
|
}
|
||
|
|
||
|
facility.push(modelData_facility);
|
||
|
}
|
||
|
//移除设备
|
||
|
removeFacility(modelData_facility: ModelData_facility) {
|
||
|
let facility = this.getFacilitiesByType(modelData_facility.facilityType);
|
||
|
if (facility == null) {
|
||
|
console.error(this.modelData.key + "移除设备出错" + modelData_facility.key);
|
||
|
}
|
||
|
else {
|
||
|
TsTool.arrayRemove(facility, modelData_facility);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 根据设备类型获取设备数据
|
||
|
* @param facilityType 设备类型
|
||
|
*/
|
||
|
getFacilitiesByType(facilityType: FacilityType) {
|
||
|
let result: ModelData_facility[] = null;
|
||
|
for (let i = 0; i < this.facilities.length; i++) {
|
||
|
if (this.facilities[i].facilityType == facilityType) {
|
||
|
result = this.facilities[i].facilities;
|
||
|
return result;
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 根据类型储存的设备数据
|
||
|
*/
|
||
|
export class FacilityDatasByType {
|
||
|
|
||
|
facilityType: FacilityType;
|
||
|
|
||
|
@Type(() => ModelData_facility)
|
||
|
facilities: ModelData_facility[] = []; //含有哪些设备
|
||
|
|
||
|
constructor(type: FacilityType) {
|
||
|
this.facilityType = type;
|
||
|
this.facilities = [];
|
||
|
}
|
||
|
}
|
||
|
|