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 = []; } }