diff --git a/src/app/babylon/controller/info-manager.ts b/src/app/babylon/controller/info-manager.ts index e4c8436..ed14f76 100644 --- a/src/app/babylon/controller/info-manager.ts +++ b/src/app/babylon/controller/info-manager.ts @@ -2,7 +2,7 @@ import { AbstractMesh } from "@babylonjs/core"; import { MarkData } from "../model/data/mark/mark-data"; import { ModelData } from "../model/data/model-data/model-data"; -import { FacilityInBuildingType, FacilityType, ModelData_facility } from "../model/data/model-data/model-data-facility"; +import { FacilityInBuildingType, FacilityPosType, FacilityType, ModelData_facility } from "../model/data/model-data/model-data-facility"; import { ModelEditData } from "../model/data/model-data/model-edit-data"; import { TransformData } from "../model/data/transform-data"; import { BuildingInfo } from "../model/info/building/building-info"; @@ -170,13 +170,21 @@ export class InfoManager { for (let i = 0; i < facilities.length; i++) { for (let j = 0; j < facilities[i].facilities.length; j++) { + + let mesh = null; + let facilityData = facilities[i].facilities[j] + if (facilityData.posType == FacilityPosType.In) { + mesh = SceneManager.Instance.scene.getMeshByID(facilityData.resName); + } + + FacilityWindow.instance.createFacility( modelEditData.facilities[i].facilities[j], false, buildingInfo, true, false, - null,//要根据类型,是不是从场景中查找 + mesh,//要根据类型,是不是从场景中查找 (modelInfo: ModelInfo_facility) => { if (ModeManager.currentMode == ModeType.Look) { modelInfo.setIconEnable(false);//查看模式下隐藏所有设备ui diff --git a/src/app/babylon/model/data/model-data/model-data-facility.ts b/src/app/babylon/model/data/model-data/model-data-facility.ts index 4965515..9106c37 100644 --- a/src/app/babylon/model/data/model-data/model-data-facility.ts +++ b/src/app/babylon/model/data/model-data/model-data-facility.ts @@ -10,9 +10,15 @@ import { ConfigManager } from "src/app/babylon/controller/config-manager"; //设备数据 export class ModelData_facility extends ModelData { - posType: FacilityPosType = FacilityPosType.Out;//位置类型 + /** + * 位置类型 + */ + posType: FacilityPosType = FacilityPosType.Out; - facilityType: FacilityType = FacilityType.PL;//具体设备类别 + /** + * 具体设备类别 + */ + facilityType: FacilityType = FacilityType.PL; @Type(() => PropertyData_Base) propertyData: PropertyData_Base = null;//属性信息 @Type(() => Vector3) @@ -102,8 +108,14 @@ export class ModelData_facility extends ModelData { //设备位置类型(室内还是室外) export enum FacilityPosType { - In = "in", //内置在建筑模型中 - Out = "out", //在编辑时单独放置 + /** + * 内置在建筑模型中 + */ + In = "in", + /** + * 在编辑时单独放置 + */ + Out = "out", } //设备展示类型 diff --git a/src/app/babylon/model/data/model-data/model-data.ts b/src/app/babylon/model/data/model-data/model-data.ts index 48df269..f0cd417 100644 --- a/src/app/babylon/model/data/model-data/model-data.ts +++ b/src/app/babylon/model/data/model-data/model-data.ts @@ -6,8 +6,14 @@ export class ModelData { key: string; //身份唯一标识 name: string; //用户定义的名称 - resName: string; //资源名称 - resPath: string; //资源路径(局部) 可使用 DataManager.getResPath进行构造 + /** + * 资源名称,如果是建筑内置设备,则代表了mesh的id(用于寻找mesh) + */ + resName: string; + /** + * 资源路径(局部) 可使用 DataManager.getResPath进行构造 + */ + resPath: string; @Type(() => TransformData) transformData: TransformData; //变换信息 version: number = 1;//版本号 diff --git a/src/app/babylon/view/facility-window/facility-window.ts b/src/app/babylon/view/facility-window/facility-window.ts index d985c3d..ae5a50d 100644 --- a/src/app/babylon/view/facility-window/facility-window.ts +++ b/src/app/babylon/view/facility-window/facility-window.ts @@ -622,7 +622,7 @@ export class FacilityWindow extends UIBase { createFacilityDataFromMesh(mesh: AbstractMesh, type: FacilityType) { let name = ConfigManager.getFacilityTypeName(type); - let result = new ModelData_facility(mesh.name, type, name, mesh.name, new TransformData(), FacilityPosType.In); + let result = new ModelData_facility(mesh.name, type, name, mesh.id, new TransformData(), FacilityPosType.In); return result; } diff --git a/src/app/service/babylon/building-basic-infos.service.ts b/src/app/service/babylon/building-basic-infos.service.ts index 5562801..950ba1f 100644 --- a/src/app/service/babylon/building-basic-infos.service.ts +++ b/src/app/service/babylon/building-basic-infos.service.ts @@ -40,7 +40,7 @@ export class BuildingBasicInfosService { name: name, // content: JSON.stringify(data), } - return this.http.post(this.baseUrl + this.c_post, JSON.stringify(data), { params }) + return this.http.post(this.baseUrl + this.c_post, (data), { params }) .pipe( catchError((err) => this.handleError(err)) );