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.
78 lines
2.3 KiB
78 lines
2.3 KiB
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 = []; |
|
} |
|
} |
|
|
|
|