|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
import { |
|
|
|
|
AbstractMesh, |
|
|
|
|
EventState, |
|
|
|
|
Mesh, |
|
|
|
|
MeshBuilder, |
|
|
|
@ -21,13 +22,15 @@ import { BuildingStatus } from '../../controller/status/building-status';
|
|
|
|
|
import { IndoorStatus } from '../../controller/status/indoor-status'; |
|
|
|
|
import { StatusManager } from '../../controller/status/status-manager'; |
|
|
|
|
import { UIManager } from '../../controller/ui-manager'; |
|
|
|
|
import { FacilityPosType, ModelData_facility, FacilityShowType } from '../../model/data/model-data/model-data-facility'; |
|
|
|
|
import { FacilityPosType, ModelData_facility, FacilityShowType, FacilityType } from '../../model/data/model-data/model-data-facility'; |
|
|
|
|
import { TransformData } from '../../model/data/transform-data'; |
|
|
|
|
import { BuildingInfo } from '../../model/info/building/building-info'; |
|
|
|
|
import { AreaInfo } from '../../model/info/model/facilityinfo-tool/facility-area'; |
|
|
|
|
import { ModelInfo_facility } from '../../model/info/model/model-info-facility'; |
|
|
|
|
import { BabylonTool } from '../../tool/babylon-tool'; |
|
|
|
|
import { BabylonUIStyleTool } from '../../tool/babylon-ui-style-tool'; |
|
|
|
|
import { GizmoTool } from '../../tool/gizmo-tool'; |
|
|
|
|
import { TsTool } from '../../tool/ts-tool'; |
|
|
|
|
|
|
|
|
|
import { CopyFacilityInfo, FacilityInfoInSceneWindow } from '../facilityinfoinscene-window/facilityinfoinscene-window'; |
|
|
|
|
import { ToolbarWindow } from '../toolbar-window/toobar-window'; |
|
|
|
@ -235,7 +238,7 @@ export class FacilityWindow extends UIBase {
|
|
|
|
|
if (eventData.event.button == 0) { //左键正常
|
|
|
|
|
if (eventData.pickInfo.hit && !SceneManager.s_isPointerDrag) { |
|
|
|
|
if (FacilityWindow.s_currentFacilityItem != null) { |
|
|
|
|
instance.createNewFacility(eventData.pickInfo.pickedPoint); |
|
|
|
|
instance.createNewFacilityByPos(eventData.pickInfo.pickedPoint); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -294,13 +297,36 @@ export class FacilityWindow extends UIBase {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//创建新的设施(用世界坐标)
|
|
|
|
|
createNewFacility(worldPosition: Vector3) { |
|
|
|
|
createNewFacilityByPos(worldPosition: Vector3) { |
|
|
|
|
let facilityData = FacilityWindow.s_currentFacilityItem.facilityData.clone( |
|
|
|
|
this.createIndex.toString() |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
facilityData.transformData.position = worldPosition.clone(); |
|
|
|
|
this.createNewFacility(facilityData); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 根据mesh创建设备 |
|
|
|
|
* @param mesh
|
|
|
|
|
* @param type
|
|
|
|
|
*/ |
|
|
|
|
createNewFacilityByMesh(mesh: AbstractMesh, type: FacilityType) { |
|
|
|
|
let facilityData = this.createFacilityDataFromMesh(mesh, type); |
|
|
|
|
//let facilityInfo = this.createFacilityInfoFromMesh(facilityData, mesh, buildingInfo);
|
|
|
|
|
|
|
|
|
|
this.createNewFacility(facilityData, mesh); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 创建新的设施(用data) |
|
|
|
|
* @param facilityData
|
|
|
|
|
* @param mesh 默认null表示利用根据数据加载模型,不是null表示已经准备好了 |
|
|
|
|
*/ |
|
|
|
|
createNewFacility(facilityData: ModelData_facility, mesh: AbstractMesh = null) { |
|
|
|
|
let currentBuidngItem = StatusManager.getStatus<BuildingStatus>(BuildingStatus) |
|
|
|
|
.buildingWindow.currentBuidngItem; |
|
|
|
|
if (currentBuidngItem == null) { |
|
|
|
@ -311,11 +337,10 @@ export class FacilityWindow extends UIBase {
|
|
|
|
|
|
|
|
|
|
Event_ChangeFacility.dispatch(facilityData, ModelChangeType.Add, null); |
|
|
|
|
|
|
|
|
|
this.createFacility(facilityData, true, undefined, false, true, (modelInfo) => { |
|
|
|
|
this.createFacility(facilityData, true, undefined, false, true, mesh, (modelInfo) => { |
|
|
|
|
GizmoTool.onPickMeshInfoObservable.notifyObservers(modelInfo); |
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -348,7 +373,7 @@ export class FacilityWindow extends UIBase {
|
|
|
|
|
} |
|
|
|
|
Event_ChangeFacility.dispatch(facilityData, ModelChangeType.Add, null); |
|
|
|
|
|
|
|
|
|
this.createFacility(facilityData, false, undefined, true, true, (modelInfo) => { |
|
|
|
|
this.createFacility(facilityData, false, undefined, true, true, null, (modelInfo) => { |
|
|
|
|
//GizmoTool.onPickMeshInfoObservable.notifyObservers(modelInfo);
|
|
|
|
|
|
|
|
|
|
modelInfo.onStopLongPress(null, null); |
|
|
|
@ -375,6 +400,7 @@ export class FacilityWindow extends UIBase {
|
|
|
|
|
buildingInfo: BuildingInfo = null, |
|
|
|
|
isLocalPos = false, |
|
|
|
|
select = false, |
|
|
|
|
mesh: AbstractMesh = null, //null 表示利用根据数据加载模型,不是null表示已经准备好了
|
|
|
|
|
onSuccess?: (modelInfo: ModelInfo_facility) => void |
|
|
|
|
): ModelInfo_facility { |
|
|
|
|
|
|
|
|
@ -508,4 +534,105 @@ export class FacilityWindow extends UIBase {
|
|
|
|
|
|
|
|
|
|
return buildingInfo; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//#region 从已有模型创建设备
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 从模型中创建消防设备信息 |
|
|
|
|
* @param mesh
|
|
|
|
|
*/ |
|
|
|
|
createFacilityByMesh(mesh: AbstractMesh, buildingInfo: BuildingInfo) { |
|
|
|
|
|
|
|
|
|
if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_GF_4)) { |
|
|
|
|
this.createNewFacilityByMesh(mesh, FacilityType.XF_MHQ_GF_4); |
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_GF_8)) { |
|
|
|
|
this.createNewFacilityByMesh(mesh, FacilityType.XF_MHQ_GF_8); |
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_GF_35)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_PT_4)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_PT_8)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHQ_PT_35)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHT)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_SSD)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_TSLX)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFCM)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFF)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFQ)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFS)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFT)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if (TsTool.stringContain(mesh.name, FacilityType.ZD_YG)) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 从模型中创建加油站相关信息 |
|
|
|
|
* @param mesh
|
|
|
|
|
*/ |
|
|
|
|
createOilingByMesh(mesh: AbstractMesh, buildingInfo: BuildingInfo) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 从模型创建阻挡物信息 |
|
|
|
|
* @param mesh
|
|
|
|
|
*/ |
|
|
|
|
createStopByMesh(mesh: AbstractMesh, buildingInfo: BuildingInfo) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 用已有mesh和设备data创建设备Info(暂时不用) |
|
|
|
|
* @param facilityData
|
|
|
|
|
* @param mesh
|
|
|
|
|
* @param buildingInfo
|
|
|
|
|
*/ |
|
|
|
|
createFacilityInfoFromMesh(facilityData: ModelData_facility, mesh: AbstractMesh, buildingInfo: BuildingInfo) { |
|
|
|
|
let facilityInfo = InfoManager.newModelInfo_facility( |
|
|
|
|
facilityData.key, |
|
|
|
|
facilityData, |
|
|
|
|
null, |
|
|
|
|
mesh, |
|
|
|
|
buildingInfo, |
|
|
|
|
true |
|
|
|
|
); |
|
|
|
|
return facilityInfo; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|