diff --git a/src/app/babylon/controller/config-manager.ts b/src/app/babylon/controller/config-manager.ts index 16cd13d..1814886 100644 --- a/src/app/babylon/controller/config-manager.ts +++ b/src/app/babylon/controller/config-manager.ts @@ -127,7 +127,7 @@ export class ConfigManager { */ static s_markName = new Map([ - [MarkType.SYD, "伤员"], + [MarkType.SY, "伤员"], [MarkType.DT, "歹徒"], [MarkType.LYX, "漏油(小)"], [MarkType.LYD, "漏油(大)"], @@ -145,13 +145,18 @@ export class ConfigManager { [MarkType.GK, "顾客"], [MarkType.JCA, "轿车"], [MarkType.JL, "经理"], - [MarkType.ZG, "主管"], + [MarkType.YZZG, "主管"], [MarkType.SYY, "收银员"], [MarkType.JYY, "加油员"], [MarkType.XYY, "卸油员"], + [MarkType.YGC, "油罐车"], + [MarkType.YGCSJ, "油罐车司机"], [MarkType.XFSD, "消防沙(堆)"], [MarkType.XFSQ, "消防沙(圈)"], - [MarkType.XFT, "消防桶"], + [MarkType.PTMHQ, "普通灭火器"], + [MarkType.GFMHQ, "干粉灭火器"], + [MarkType.TCMHQ, "推车灭火器"], + [MarkType.ZYMBRQ, "专用密闭容器"], [MarkType.JJX, "警戒线"], [MarkType.JGLX, "进攻路线"], [MarkType.CT, "撤退"], diff --git a/src/app/babylon/controller/scene-manager.ts b/src/app/babylon/controller/scene-manager.ts index 6194e96..1d4ffa9 100644 --- a/src/app/babylon/controller/scene-manager.ts +++ b/src/app/babylon/controller/scene-manager.ts @@ -257,11 +257,13 @@ export class SceneManager { if (this.highLightLayer == null) { this.highLightLayer = new HighlightLayer("highLight", this.scene, { - mainTextureRatio: 1, + mainTextureRatio: 2, + blurVerticalSize: 1.5, + blurHorizontalSize: 1.5, }); - this.highLightLayer.innerGlow = true; + this.openInnerGlow(true); + // this.highLightLayer.innerGlow = true; this.highLightLayer.outerGlow = true; - } let allMesh = mesh.getChildMeshes(); @@ -270,13 +272,22 @@ export class SceneManager { let childMesh = allMesh[i]; if (childMesh instanceof Mesh) { this.highLightLayer.addMesh(childMesh, color); - + // childMesh.material.alphaMode = this.highLightNum++; } } } + /** + * 开启内发光 + */ + openInnerGlow(open: boolean) { + if (this.highLightLayer != null) { + this.highLightLayer.innerGlow = open; + } + } + highLightNum = 0; /** diff --git a/src/app/babylon/model/data/mark/all-mark-data.ts b/src/app/babylon/model/data/mark/all-mark-data.ts index eb551fa..a7999d2 100644 --- a/src/app/babylon/model/data/mark/all-mark-data.ts +++ b/src/app/babylon/model/data/mark/all-mark-data.ts @@ -44,7 +44,7 @@ export class AllMarkData { //灾情 let tagPos: MarkTagPos = MarkTagPos.Disaster; - AllMarkData.newMarkData(MarkType.SYD, MarkKindType.Persion, tagPos, result); + AllMarkData.newMarkData(MarkType.SY, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.DT, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.LYX, MarkKindType.Goods, tagPos, result); AllMarkData.newMarkData(MarkType.LYD, MarkKindType.Goods, tagPos, result); @@ -65,13 +65,18 @@ export class AllMarkData { //内部力量 tagPos = MarkTagPos.Inside; AllMarkData.newMarkData(MarkType.JL, MarkKindType.Persion, tagPos, result); - AllMarkData.newMarkData(MarkType.ZG, MarkKindType.Persion, tagPos, result); + AllMarkData.newMarkData(MarkType.YZZG, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.SYY, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.JYY, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.XYY, MarkKindType.Persion, tagPos, result); + AllMarkData.newMarkData(MarkType.YGC, MarkKindType.Car, tagPos, result); + AllMarkData.newMarkData(MarkType.YGCSJ, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.XFSD, MarkKindType.Persion, tagPos, result); AllMarkData.newMarkData(MarkType.XFSQ, MarkKindType.Persion, tagPos, result); - AllMarkData.newMarkData(MarkType.XFT, MarkKindType.Persion, tagPos, result); + AllMarkData.newMarkData(MarkType.ZYMBRQ, MarkKindType.Goods, tagPos, result); + AllMarkData.newMarkData(MarkType.PTMHQ, MarkKindType.Goods, tagPos, result); + AllMarkData.newMarkData(MarkType.GFMHQ, MarkKindType.Goods, tagPos, result); + AllMarkData.newMarkData(MarkType.TCMHQ, MarkKindType.Goods, tagPos, result); //其他 tagPos = MarkTagPos.Other; @@ -123,14 +128,14 @@ export class AllMarkData { } //除了灾情以外, 人和车的任务类型 - if (tagPos != MarkTagPos.Disaster) { - if (kindType == MarkKindType.Persion) { - l_taskType = MarkTask.Person; - } - else if (kindType == MarkKindType.Car) { - l_taskType = MarkTask.Car; - } + //if (tagPos != MarkTagPos.Disaster) { + if (kindType == MarkKindType.Persion) { + l_taskType = MarkTask.Person; } + else if (kindType == MarkKindType.Car) { + l_taskType = MarkTask.Car; + } + //} //没指定,则使用规则的任务类型 if (taskType == null) { diff --git a/src/app/babylon/model/data/mark/mark-data.ts b/src/app/babylon/model/data/mark/mark-data.ts index 6c256d3..bd45425 100644 --- a/src/app/babylon/model/data/mark/mark-data.ts +++ b/src/app/babylon/model/data/mark/mark-data.ts @@ -17,7 +17,7 @@ export class MarkData extends ModelData { /** * 名称类型,标志其具体是什么 */ - type: MarkType = MarkType.SYD; + type: MarkType = MarkType.SY; /** * 所属标签的tag @@ -71,7 +71,7 @@ export class MarkData extends ModelData { defaultTask = "文字信息"; } - this.property = new MarkProperty(taskType, undefined, undefined, defaultTask); + this.property = new MarkProperty(taskType, this.name, undefined, defaultTask); } } @@ -160,7 +160,7 @@ export enum MarkType { /** * 伤员D */ - SYD = "SYD", + SY = "SY", /** * 歹徒 @@ -243,7 +243,7 @@ export enum MarkType { /** * 主管 */ - ZG = "ZG", + YZZG = "YZZG", /** * 收银员 @@ -260,6 +260,16 @@ export enum MarkType { */ XYY = "XYY", + /** + * 油罐车 + */ + YGC = "YGC", + + /** + * 油罐车司机 + */ + YGCSJ = "YGCSJ", + /** * 消防沙(堆) */ @@ -271,9 +281,25 @@ export enum MarkType { XFSQ = "XFSQ", /** - * 消防桶 + * 专用密闭容器 + */ + ZYMBRQ = "ZYMBRQ", + + /** + * 普通灭火器 + */ + PTMHQ = "PTMHQ", + + /** + * 干粉灭火器 */ - XFT = "XFT", + GFMHQ = "GFMHQ", + + /** + * 推车灭火器 + */ + TCMHQ = "TCMHQ", + //===================其他=================== diff --git a/src/app/babylon/model/data/mark/mark-property.ts b/src/app/babylon/model/data/mark/mark-property.ts index fac3311..caf0fb0 100644 --- a/src/app/babylon/model/data/mark/mark-property.ts +++ b/src/app/babylon/model/data/mark/mark-property.ts @@ -43,7 +43,8 @@ export class MarkProperty { * 获取单位-编号 */ getInstitutionNum() { - return this.institution + "-" + this.index; + // return this.institution + "-" + this.index; + return this.institution; } diff --git a/src/app/babylon/model/info/mark/mark-plan-info.ts b/src/app/babylon/model/info/mark/mark-plan-info.ts index eabde20..0c66994 100644 --- a/src/app/babylon/model/info/mark/mark-plan-info.ts +++ b/src/app/babylon/model/info/mark/mark-plan-info.ts @@ -5,7 +5,7 @@ import { MarkNodeData, MarkPlanData } from "../../data/mark/mark-plan-data"; import { ModelInfo_mark } from "./model-info-mark"; /** - * 标绘方案数据(一级节点的集合) + * 标绘方案数据(二级节点) */ export class MarkNodeInfo { diff --git a/src/app/babylon/model/info/mark/model-info-mark.ts b/src/app/babylon/model/info/mark/model-info-mark.ts index f7e62c0..8af606f 100644 --- a/src/app/babylon/model/info/mark/model-info-mark.ts +++ b/src/app/babylon/model/info/mark/model-info-mark.ts @@ -12,11 +12,12 @@ import { SceneManager } from "src/app/babylon/controller/scene-manager"; import { UIManager } from "src/app/babylon/controller/ui-manager"; import { BabylonTool } from "src/app/babylon/tool/babylon-tool"; import { BabylonUIStyleTool } from "src/app/babylon/tool/babylon-ui-style-tool"; +import { GizmoTool } from "src/app/babylon/tool/gizmo-tool"; import { ParticleSystemTool } from "src/app/babylon/tool/particle-system-tool"; import { TsTool } from "src/app/babylon/tool/ts-tool"; import { MarkWindow } from "src/app/babylon/view/mark-window/mark-window"; -import { ChildNodeData, MarkData, MarkTask, MarkType } from "../../data/mark/mark-data"; +import { ChildNodeData, MarkData, MarkKindType, MarkTask, MarkType } from "../../data/mark/mark-data"; import { BuildingInfo } from "../building/building-info"; import { ModelInfo } from "../model/model-info"; @@ -194,7 +195,7 @@ export class ModelInfo_mark extends ModelInfo { * @param select */ onSelect(select: boolean) { - console.log("onSelect", select); + // console.log("onSelect", select); this.isSelect = select; // this.lookAt(); if (select) { @@ -210,17 +211,28 @@ export class ModelInfo_mark extends ModelInfo { //this.pointerDragBehavior.enabled = true; } + //特效类,要出现坐标轴 + if (this.markData.markKindType == MarkKindType.Effect) { + GizmoTool.onPickMeshInfoObservable.notifyObservers(this); + } + else { + GizmoTool.onPickMeshInfoObservable.notifyObservers(null); + } + // SceneManager.Instance.defaultCamera.target = this.modelBox.absolutePosition.clone() // SceneManager.Instance.defaultCamera.setTarget(this.modelBox.absolutePosition.clone()); } else { + //GizmoTool.onPickMeshInfoObservable.notifyObservers(null); SceneManager.Instance.removeFromHighLight(this.modelBox as Mesh) if (this.pointerDragBehavior != null) { //this.pointerDragBehavior.enabled = false; //停止拖拽 } } + + let eventType: MarkInfoChangeType = select ? MarkInfoChangeType.Select : MarkInfoChangeType.UnSelect; Event_MarkInfoChange.dispatch(eventType, this); diff --git a/src/app/babylon/model/info/mark/other/mark-plan-area-info.ts b/src/app/babylon/model/info/mark/other/mark-plan-area-info.ts index b6ba569..9ff260b 100644 --- a/src/app/babylon/model/info/mark/other/mark-plan-area-info.ts +++ b/src/app/babylon/model/info/mark/other/mark-plan-area-info.ts @@ -232,7 +232,7 @@ export class AreaPoint { this.pos = pos; this.parent = parent; - this.mesh = MeshBuilder.CreateSphere("AreaPoint", { segments: 4, diameter: 3 }); + this.mesh = MeshBuilder.CreateSphere("AreaPoint", { segments: 4, diameter: 0.8 }); this.mesh.material = material; this.mesh.setParent(parent.modelBox); this.mesh.position = pos; diff --git a/src/app/babylon/model/info/mark/other/mark-plan-line-info.ts b/src/app/babylon/model/info/mark/other/mark-plan-line-info.ts index ccff6c3..4cbe22f 100644 --- a/src/app/babylon/model/info/mark/other/mark-plan-line-info.ts +++ b/src/app/babylon/model/info/mark/other/mark-plan-line-info.ts @@ -1,4 +1,4 @@ -import { Color3, EventState, Mesh, MeshBuilder, Observer, PointerEventTypes, PointerInfo, Scene, StandardMaterial, Vector3 } from "@babylonjs/core"; +import { BaseTexture, Color3, EventState, Mesh, MeshBuilder, NodeMaterial, Observer, PointerEventTypes, PointerInfo, Scene, StandardMaterial, Texture, Vector3, Vector4 } from "@babylonjs/core"; import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh"; import { classToClass, plainToClass } from "class-transformer"; import { SceneManager } from "src/app/babylon/controller/scene-manager"; @@ -21,17 +21,25 @@ export class ModelInfo_mark_line extends ModelInfo_mark { lineMesh: Mesh; - mat: StandardMaterial; + mat: StandardMaterial | NodeMaterial; + static publicMat: NodeMaterial; onCreate(isNew: boolean) { let instance = this; instance.lineData = this.markData as MarkData_Line; - + //if (ModelInfo_mark_line.publicMat == null) { this.mat = new StandardMaterial("mat_areaPoint", SceneManager.Instance.scene); this.mat.emissiveColor = Color3.FromHexString(this.lineData.color); this.mat.disableLighting = true; + // } + // else { + // this.mat = ModelInfo_mark_line.publicMat; + // } + + + if (isNew) { instance.lineData.pointData = []; @@ -56,11 +64,28 @@ export class ModelInfo_mark_line extends ModelInfo_mark { */ updateRender() { if (this.lineData.pointData != null && this.lineData.pointData.length > 1) { - this.lineMesh = MeshBuilder.CreateTube("tube", { path: this.lineData.pointData, radius: 0.5, sideOrientation: Mesh.DOUBLESIDE, updatable: true }, SceneManager.Instance.scene); + this.lineMesh = MeshBuilder.CreateTube("tube", { path: this.lineData.pointData, radius: 0.1, sideOrientation: Mesh.FRONTSIDE, updatable: true, cap: 3 }, SceneManager.Instance.scene); this.lineMesh.setParent(this.modelBox); - this.lineMesh.position = Vector3.Zero(); + this.lineMesh.position = Vector3.Zero() this.lineMesh.material = this.mat; + let length = Vector3.Distance(this.lineData.pointData[0], this.lineData.pointData[1]); + + let instance = this; + //if (this.mat instanceof StandardMaterial) { + BabylonTool.locadShader("assets/shader/warn-line.json", instance.lineMesh, (mat: NodeMaterial) => { + //instance.mat.dispose(); + instance.mat = mat; + ModelInfo_mark_line.publicMat = mat; + // instance.lineMesh.material.getEffect()?.setFloat("u_alpha", 1); + let textures: BaseTexture[] = instance.lineMesh.material.getActiveTextures(); + let texture0 = (textures[0] as Texture); + texture0.vScale = length; + texture0.wrapV = 1; + }); + //} + + } } @@ -170,9 +195,9 @@ export class ModelInfo_mark_line extends ModelInfo_mark { dispose() { - if (this.mat != null) { - this.mat.dispose(); - } + // if (this.mat != null) { + // this.mat.dispose(); + // } this.removeEvent(); super.dispose(); diff --git a/src/app/babylon/model/info/mark/other/mark-plan-multi-arrow.ts b/src/app/babylon/model/info/mark/other/mark-plan-multi-arrow.ts index 493e566..0c4de2c 100644 --- a/src/app/babylon/model/info/mark/other/mark-plan-multi-arrow.ts +++ b/src/app/babylon/model/info/mark/other/mark-plan-multi-arrow.ts @@ -96,10 +96,10 @@ export class ModelInfo_mark_multiArrow extends ModelInfo_mark { localPos.y = localPos.y / this.modelBox.scaling.y; console.log(point, localPos, this.modelBox.absolutePosition); - let startBox = MeshBuilder.CreateBox("start", { size: 1 }); - startBox.setParent(this.modelBox); + // let startBox = MeshBuilder.CreateBox("start", { size: 1 }); + // startBox.setParent(this.modelBox); - startBox.position = localPos; + // startBox.position = localPos; diff --git a/src/app/babylon/model/info/mark/other/mark-plan-particle-info.ts b/src/app/babylon/model/info/mark/other/mark-plan-particle-info.ts index 473a8e4..7222579 100644 --- a/src/app/babylon/model/info/mark/other/mark-plan-particle-info.ts +++ b/src/app/babylon/model/info/mark/other/mark-plan-particle-info.ts @@ -35,23 +35,23 @@ export class ModelInfo_mark_particle extends ModelInfo_mark { case MarkType.H: particleJsonPath.push("assets/particlesystem/fire/fire_h_1.json"); particleJsonPath.push("assets/particlesystem/smoke/smoke_a.json"); - instance.modelBox.scaling = new Vector3(5, 1, 5); + instance.modelBox.scaling = new Vector3(50, 70, 50); posOffset.y = 0.7 / instance.modelBox.scaling.y; break; case MarkType.SNH: particleJsonPath.push("assets/particlesystem/fire/fire_snh_1.json"); particleJsonPath.push("assets/particlesystem/smoke/smoke_snh.json"); - instance.modelBox.scaling = new Vector3(3, 1, 3); + instance.modelBox.scaling = new Vector3(30, 60, 30); posOffset.y = 0.2 / instance.modelBox.scaling.y; break; case MarkType.YWA: particleJsonPath.push("assets/particlesystem/smoke/smoke_a.json"); - instance.modelBox.scaling = new Vector3(5, 1, 5); + instance.modelBox.scaling = new Vector3(50, 130, 50); posOffset.y = 0.1 / instance.modelBox.scaling.y; break; case MarkType.YWB: particleJsonPath.push("assets/particlesystem/smoke/smoke_snh.json"); - instance.modelBox.scaling = new Vector3(3, 1, 3); + instance.modelBox.scaling = new Vector3(30, 60, 30); posOffset.y = 0.2 / instance.modelBox.scaling.y; break; } diff --git a/src/app/babylon/tool/babylon-tool.ts b/src/app/babylon/tool/babylon-tool.ts index 9b04c7f..3536d1f 100644 --- a/src/app/babylon/tool/babylon-tool.ts +++ b/src/app/babylon/tool/babylon-tool.ts @@ -11,6 +11,7 @@ import { ISceneLoaderProgressEvent, Mesh, MeshBuilder, + NodeMaterial, PBRMaterial, QuadraticEase, Quaternion, @@ -189,6 +190,40 @@ export class BabylonTool { } } + /** + * 加载nodeshader并构建材质 + * @param shaderPath + * @param mesh + * @param onSuccess + */ + static locadShader(shaderPath: string, mesh?: AbstractMesh, onSuccess?: (mat: NodeMaterial) => void): NodeMaterial { + let nodeMaterial = new NodeMaterial(shaderPath, undefined, { emitComments: false }); //关闭shader内容的打印 + + let shaderUrl = shaderPath; + + nodeMaterial.loadAsync(shaderUrl).then(() => { + nodeMaterial.build(false); //关闭shader调试打印 + if (mesh != null) { + mesh.material = nodeMaterial; + // let effect = nodeMaterial.getEffect(); + // console.log("============" + nodeMaterial.getInputBlocks()); + // let inputs = nodeMaterial.getInputBlocks(); + // for (let i = 0; i < inputs.length; i++) { + // console.log(inputs[i]); + // } + + // mesh.material.getEffect()?.setFloat("u_alpha", 1); + + } + + if (onSuccess != null) { + onSuccess(nodeMaterial); + } + }); + + return nodeMaterial; + } + //改变摄像机观察目标 diff --git a/src/app/babylon/tool/gizmo-tool.ts b/src/app/babylon/tool/gizmo-tool.ts index a88eb6a..0ebea4d 100644 --- a/src/app/babylon/tool/gizmo-tool.ts +++ b/src/app/babylon/tool/gizmo-tool.ts @@ -177,6 +177,7 @@ export class GizmoTool { //改变gizmo目标mesh static onChangeGizmoAim(modelInfo: ModelInfo) { + // console.trace("改变目标", modelInfo); let mesh = null; GizmoTool.s_nowPickAim = modelInfo; diff --git a/src/app/babylon/view/building-window/building-window.ts b/src/app/babylon/view/building-window/building-window.ts index 9285571..f0208e4 100644 --- a/src/app/babylon/view/building-window/building-window.ts +++ b/src/app/babylon/view/building-window/building-window.ts @@ -803,6 +803,8 @@ export class BuildingWindow extends UIBase { for (let i = 0; i < showNameFacilitys.length; i++) { showNameFacilitys[i].showNameUI(isShowNameUI_JYJ_YG); } + SceneManager.Instance.openInnerGlow(!isShowNameUI_JYJ_YG); //输油管和油气回收管太细,关闭内发光 + if (show) { @@ -951,7 +953,9 @@ export class BuildingWindow extends UIBase { */ private findUVMat(mesh: AbstractMesh) { let result = []; - + if (mesh == null) { + return result; + } let childMesh = mesh.getChildMeshes(); childMesh.push(mesh); diff --git a/src/app/babylon/view/facility-window/facility-window.ts b/src/app/babylon/view/facility-window/facility-window.ts index 8d68f96..619f341 100644 --- a/src/app/babylon/view/facility-window/facility-window.ts +++ b/src/app/babylon/view/facility-window/facility-window.ts @@ -254,14 +254,15 @@ export class FacilityWindow extends UIBase { return; } } - if (!SceneManager.s_isPointerDrag && !ToolbarWindow.instance.isMeshAdsorb) { - GizmoTool.onPickMeshInfoObservable.notifyObservers(null);//取消之前选择 - } + // if (!SceneManager.s_isPointerDrag && !ToolbarWindow.instance.isMeshAdsorb) { + // GizmoTool.onPickMeshInfoObservable.notifyObservers(null);//取消之前选择 + // } } else { //右键取消 if (!SceneManager.s_isPointerDrag)//不是拖拽 { instance.three.unSelectBottomIcon(); + GizmoTool.onPickMeshInfoObservable.notifyObservers(null);//取消之前选择 } } diff --git a/src/app/babylon/view/mark-window/mark-window.ts b/src/app/babylon/view/mark-window/mark-window.ts index 45cada3..ac974dd 100644 --- a/src/app/babylon/view/mark-window/mark-window.ts +++ b/src/app/babylon/view/mark-window/mark-window.ts @@ -29,6 +29,7 @@ import { BabylonTool } from "../../tool/babylon-tool"; import { LoadTool } from "../../tool/load-tool"; import { MeshPool, MeshPoolInfo } from "../../tool/mesh-pool"; import { ParticleSystemTool } from "../../tool/particle-system-tool"; +import { SpeakingTool } from "../../tool/speaking-tool"; import { BuildingUIItem } from "../building-window/building-ui-item"; import { BuildingWindow } from "../building-window/building-window"; import { IndoorFloorUIItem } from "../indoor-window/indoor-floorui-item"; @@ -302,8 +303,9 @@ export class MarkWindow extends UIBase { * @param planId 方案 * @param nodeId 节点 * @param changeBuildingByUI 是否在沙盘状态下,点UI切层、建筑 + * @param readDescribe 朗读描述 */ - selectMarkNode(planId: number, nodeId: number, changeBuildingByUI: boolean = false) { + selectMarkNode(planId: number, nodeId: number, changeBuildingByUI: boolean = false, readDescribe = false) { // //还原数据 // if (this.currentMarkNodeDataCopy != null && reData) { // let oldPlaneData = this.currentMarkNodeInfo.belongToPlanData; @@ -356,11 +358,16 @@ export class MarkWindow extends UIBase { this.currentMarkNodeInfo = new MarkNodeInfo(markPlanData, this.currentMarkNodeDataCopy); //this.currentMarkNodeDataCopy = classToClass(this.currentMarkNodeInfo.nodeData); //更新备份数据 this.updateNodeInfo(); + if (readDescribe) { + this.readDescribe(nodeCopy.describe); + } + } } + /** * 新建方案(一级节点) * @param name 新方案名称 @@ -502,11 +509,11 @@ export class MarkWindow extends UIBase { // markInfo.markData //通知前端 最后需要其调用 selectMarkData selectMarkDataFrom3d(markInfo: ModelInfo_mark, select: boolean) { if (select) { - //PlanComponent.instance.selectSandTableMark(markInfo.markData, select) + PlanComponent.instance.selectSandTableMark(markInfo.markData, select) } else { if (markInfo != null) { - //PlanComponent.instance.selectSandTableMark(markInfo.markData, select) + PlanComponent.instance.selectSandTableMark(markInfo.markData, select) } } @@ -969,7 +976,6 @@ export class MarkWindow extends UIBase { } }) - console.log(mesh, "是标绘物", result); return result; } @@ -1500,6 +1506,17 @@ export class MarkWindow extends UIBase { } + /** + * 朗读描述 + * @param describe + */ + readDescribe(describe: string) { + if (describe != null) { + SpeakingTool.Instance.clear(); + SpeakingTool.Instance.speak(describe); + } + } + //#endregion diff --git a/src/app/pages/left-domain/left-domain.component.html b/src/app/pages/left-domain/left-domain.component.html index 9ecce0c..37a8d9f 100644 --- a/src/app/pages/left-domain/left-domain.component.html +++ b/src/app/pages/left-domain/left-domain.component.html @@ -140,7 +140,12 @@
- {{item.name}} + {{item.name}} +
  • @@ -162,6 +167,16 @@ + +
    + + 预案名称 + + + + +
    +
    diff --git a/src/app/pages/left-domain/left-domain.component.scss b/src/app/pages/left-domain/left-domain.component.scss index 51eafd9..b536e03 100644 --- a/src/app/pages/left-domain/left-domain.component.scss +++ b/src/app/pages/left-domain/left-domain.component.scss @@ -90,7 +90,7 @@ line-height: 35px; color: #23D9FF; padding-left: 20px; - label{ float: right; .anticon{ margin-right: 15px; font-size: 18px; cursor: pointer; } } + label{ float: right; .anticon{ margin-right: 10px; font-size: 18px; cursor: pointer; } } span{ cursor: pointer; } } .disposalContent { color: #fff; .anticon{ color: #23D9FF; } } diff --git a/src/app/pages/left-domain/left-domain.component.ts b/src/app/pages/left-domain/left-domain.component.ts index f0014c3..58efc2c 100644 --- a/src/app/pages/left-domain/left-domain.component.ts +++ b/src/app/pages/left-domain/left-domain.component.ts @@ -53,7 +53,9 @@ export class LeftDomainComponent implements OnInit { MarkWindow.instance ? this.allMarkPlanData = MarkWindow.instance.allMarkPlanData : null EventManager.addListener(Event_GetAllMarkPlanData, (data: Event_GetAllMarkPlanData) => { this.allMarkPlanData = data.data + PlanComponent.instance.allMarkPlanData = this.allMarkPlanData }) + PlanComponent.instance.allMarkPlanData = this.allMarkPlanData return } let list: FacilityInfoUIItem[] = [] @@ -178,6 +180,21 @@ export class LeftDomainComponent implements OnInit { } } + editSelectDisposal: MarkPlanData = null; //编辑预案名称 选中预案 + editDisposalName: string = null; //显示/隐藏 编辑预案名称 弹窗 + + //打开 编辑预案名称弹窗 + openEditDisposal(item: MarkPlanData) { + this.editSelectDisposal = item; + this.editDisposalName = JSON.parse(JSON.stringify(item.name)) + } + + //编辑预案名称 + editDisposal(e) { + this.editSelectDisposal.name = e.name + this.editSelectDisposal = null + } + //删除预案/节点 deleteDisposal(item: MarkPlanData, e?: MarkNodeData) { let isTrue = confirm('您确定要删除吗') @@ -194,6 +211,8 @@ export class LeftDomainComponent implements OnInit { selectNode(item: MarkPlanData, e: MarkNodeData) { if (this.selectPlanId != item.id || this.selectNodeId != e.id) { //选中 if (!MarkWindow.instance.currentMarkNodeInfo) { //未选中节点 + PlanComponent.instance.beforeEmergencyPlan = item + PlanComponent.instance.beforePlanNode = e this.selectPlanId = item.id this.selectNodeId = e.id MarkWindow.instance.selectMarkNode(item.id, e.id) @@ -202,8 +221,9 @@ export class LeftDomainComponent implements OnInit { if (ModeManager.currentMode == ModeType.Edit) { isTrue = confirm('切换节点后,没保存的信息将会丢失!') } - if (isTrue) { + PlanComponent.instance.beforeEmergencyPlan = item + PlanComponent.instance.beforePlanNode = e this.selectPlanId = item.id this.selectNodeId = e.id MarkWindow.instance.selectMarkNode(item.id, e.id) @@ -215,6 +235,8 @@ export class LeftDomainComponent implements OnInit { isTrue = confirm('切换节点后,没保存的信息将会丢失!') } if (isTrue) { + PlanComponent.instance.beforeEmergencyPlan = null + PlanComponent.instance.beforePlanNode = null this.selectPlanId = null this.selectNodeId = null MarkWindow.instance.selectMarkNode(null, null) diff --git a/src/app/pages/plan/plan.component.html b/src/app/pages/plan/plan.component.html index 9978d24..e19ccfb 100644 --- a/src/app/pages/plan/plan.component.html +++ b/src/app/pages/plan/plan.component.html @@ -151,7 +151,12 @@
    - + + + +