Browse Source

各模块分类展示完成

dev
刘向辉 3 years ago
parent
commit
5b8d71a201
  1. 12
      src/app/babylon/controller/data-manager.ts
  2. 2
      src/app/babylon/controller/info-manager.ts
  3. 3
      src/app/babylon/controller/scene-manager.ts
  4. 2
      src/app/babylon/controller/serve-manager.ts
  5. 3
      src/app/babylon/model/info/model/model-info-building.ts
  6. 33
      src/app/babylon/model/info/model/model-info-facility.ts
  7. 15
      src/app/babylon/model/info/model/model-info.ts
  8. 2
      src/app/babylon/tool/gizmo-tool.ts
  9. 1
      src/app/babylon/tool/measure-tool.ts
  10. 8
      src/app/babylon/view/building-window/building-ui-item.ts
  11. 69
      src/app/babylon/view/building-window/building-window.ts
  12. 19
      src/app/babylon/view/facility-window/facility-window.ts
  13. 4
      src/app/pages/plan/plan.component.ts

12
src/app/babylon/controller/data-manager.ts

@ -1,6 +1,7 @@
import { HttpErrorResponse } from '@angular/common/http'; import { HttpErrorResponse } from '@angular/common/http';
import { Quaternion, Vector3 } from '@babylonjs/core'; import { Quaternion, Vector3 } from '@babylonjs/core';
import { plainToClass } from 'class-transformer'; import { plainToClass } from 'class-transformer';
import { PlanComponent } from 'src/app/pages/plan/plan.component';
import { import {
BuildingData, BuildingData,
BuildingData_ChemicalPlant, BuildingData_ChemicalPlant,
@ -85,10 +86,11 @@ export class DataManager {
} }
console.error("获取单位信息失败,本地捏造数据"); console.error("获取单位信息失败,本地捏造数据");
DataManager.initDebugData_institution(); PlanComponent.instance.openSnackBar("获取单位失败,请刷新重试");
if (onSuccess) { // DataManager.initDebugData_institution();
onSuccess(key); // if (onSuccess) {
} // onSuccess(key);
// }
}); });
} }
else { else {
@ -322,7 +324,7 @@ export class DataManager {
*/ */
static initDebugData_mark() { static initDebugData_mark() {
DataManager.allMarkData = AllMarkData.CreateAllMarkData(); DataManager.allMarkData = AllMarkData.CreateAllMarkData();
console.log(DataManager.allMarkData, "态势标会"); // console.log(DataManager.allMarkData, "态势标会");
} }
static init(simpleData: InsitutionDataSimple, onSuccess?: (key: string) => void) { static init(simpleData: InsitutionDataSimple, onSuccess?: (key: string) => void) {

2
src/app/babylon/controller/info-manager.ts

@ -177,6 +177,7 @@ export class InfoManager {
mesh = buildingInfo.ModelInfo.getChildrenByName(facilityData.resName); mesh = buildingInfo.ModelInfo.getChildrenByName(facilityData.resName);
} }
FacilityWindow.instance.createFacility( FacilityWindow.instance.createFacility(
modelEditData.facilities[i].facilities[j], modelEditData.facilities[i].facilities[j],
false, false,
@ -188,6 +189,7 @@ export class InfoManager {
if (ModeManager.currentMode == ModeType.Look) { if (ModeManager.currentMode == ModeType.Look) {
modelInfo.setIconEnable(false);//查看模式下隐藏所有设备ui modelInfo.setIconEnable(false);//查看模式下隐藏所有设备ui
} }
} }
); );
} }

3
src/app/babylon/controller/scene-manager.ts

@ -133,9 +133,10 @@ export class SceneManager {
Vector3.Zero(), //目标位置 Vector3.Zero(), //目标位置
this.scene //定义摄像机所属的场景 this.scene //定义摄像机所属的场景
); );
camera.minZ = 0;//最近拍摄距离
camera.maxZ = 6000; //摄像机拍摄的最远距离 camera.maxZ = 6000; //摄像机拍摄的最远距离
// camera.upperBetaLimit = 1.5; //beta方向上的旋转限制(防止看到模型底面) // camera.upperBetaLimit = 1.5; //beta方向上的旋转限制(防止看到模型底面)
camera.lowerRadiusLimit = 3; //相机距离拍摄目标的最小距离(防止穿插) camera.lowerRadiusLimit = 1; //相机距离拍摄目标的最小距离(防止穿插)
camera.setTarget(Vector3.Zero()); //设置拍摄目标 camera.setTarget(Vector3.Zero()); //设置拍摄目标
camera.attachControl(this.canvas, true); //把相机连接到画布 camera.attachControl(this.canvas, true); //把相机连接到画布
this.defaultCamera = camera; this.defaultCamera = camera;

2
src/app/babylon/controller/serve-manager.ts

@ -34,7 +34,7 @@ export class ServeManager {
) => void, onError?: (key: string, error: any) => void) { ) => void, onError?: (key: string, error: any) => void) {
this.buildingBISrv.getBuildingBasicInfos(key) this.buildingBISrv.getBuildingBasicInfos(key)
.subscribe(data => { .subscribe(data => {
console.log("得到单位信息" + key, data); //console.log("得到单位信息" + key, data);
if (onSuccess) { if (onSuccess) {
onSuccess(key, JSON.parse((data as any).result)); onSuccess(key, JSON.parse((data as any).result));
} }

3
src/app/babylon/model/info/model/model-info-building.ts

@ -48,8 +48,9 @@ export class ModelInfo_building extends ModelInfo {
if (this.neiRoot == null) { if (this.neiRoot == null) {
for (let i = 0; i < allTransformNode.length; i++) { for (let i = 0; i < allTransformNode.length; i++) {
if (TsTool.stringContain(allTransformNode[i].name, "wai")) { if (TsTool.stringContain(allTransformNode[i].name, "WAI")) {
this.neiRoot = allTransformNode[i]; this.neiRoot = allTransformNode[i];
console.log("找到关键节点wai");
break; break;
} }
} }

33
src/app/babylon/model/info/model/model-info-facility.ts

@ -1,8 +1,9 @@
import { AbstractMesh, EventState } from "@babylonjs/core"; import { AbstractMesh, Color3, EventState, Mesh } from "@babylonjs/core";
import { Button, Control, Ellipse, Rectangle, Vector2WithInfo } from "@babylonjs/gui"; import { Button, Control, Ellipse, Rectangle, Vector2WithInfo } from "@babylonjs/gui";
import { ConfigManager } from "src/app/babylon/controller/config-manager"; import { ConfigManager } from "src/app/babylon/controller/config-manager";
import { SceneManager } from "src/app/babylon/controller/scene-manager"; import { SceneManager } from "src/app/babylon/controller/scene-manager";
import { BabylonUIStyleTool } from "src/app/babylon/tool/babylon-ui-style-tool"; import { BabylonUIStyleTool } from "src/app/babylon/tool/babylon-ui-style-tool";
import { TsTool } from "src/app/babylon/tool/ts-tool";
import { FacilityWindow } from "src/app/babylon/view/facility-window/facility-window"; import { FacilityWindow } from "src/app/babylon/view/facility-window/facility-window";
import { FacilityInfoInSceneWindow } from "src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-window"; import { FacilityInfoInSceneWindow } from "src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-window";
import { PropertyBaseWindow } from "src/app/babylon/view/property-window/property-base-window"; import { PropertyBaseWindow } from "src/app/babylon/view/property-window/property-base-window";
@ -157,6 +158,36 @@ export class ModelInfo_facility extends ModelInfo {
} }
} }
/**
* ()
* @param play false表示停止
*/
playShowAnim(play: boolean) {
this.showFollowUI(play);
if (this.modelBox != null) {
if (play) {
SceneManager.Instance.addToHighLight(this.modelBox as Mesh, Color3.Yellow());
}
else {
SceneManager.Instance.removeFromHighLight(this.modelBox as Mesh);
}
let facilityData = this.modelData as ModelData_facility;
if (facilityData.facilityType == FacilityType.JY_SYGX || facilityData.facilityType == FacilityType.JY_YQHSGX) {
let allChildren = this.modelBox.getChildMeshes();
for (let i = 0; i < allChildren.length; i++) {
if (TsTool.stringContain(allChildren[i].name, "UV")) {
allChildren[i].setEnabled(play);
}
}
}
}
}
dispose(disposeMesh?: boolean) { dispose(disposeMesh?: boolean) {
if (this.areaInfo != null) { if (this.areaInfo != null) {
this.areaInfo.dispose(); this.areaInfo.dispose();

15
src/app/babylon/model/info/model/model-info.ts

@ -136,21 +136,6 @@ export class ModelInfo {
} }
} }
/**
* ()
* @param play false表示停止
*/
playShowAnim(play: boolean) {
this.showFollowUI(play);
if (this.modelBox != null) {
if (play) {
SceneManager.Instance.addToHighLight(this.modelBox as Mesh, Color3.Yellow());
}
else {
SceneManager.Instance.removeFromHighLight(this.modelBox as Mesh);
}
}
}
/** /**
* *

2
src/app/babylon/tool/gizmo-tool.ts

@ -96,6 +96,8 @@ export class GizmoTool {
GizmoTool.s_camera.panningSensibility = speed;//动态修改平移灵敏度 GizmoTool.s_camera.panningSensibility = speed;//动态修改平移灵敏度
GizmoTool.s_camera.wheelDeltaPercentage = 0.005;
if (SceneManager.Instance.cameraMode_Is2D) { if (SceneManager.Instance.cameraMode_Is2D) {
let camera = SceneManager.Instance.defaultCamera; let camera = SceneManager.Instance.defaultCamera;
camera.beta = 0; camera.beta = 0;

1
src/app/babylon/tool/measure-tool.ts

@ -105,7 +105,6 @@ export class MeasureTool {
* *
*/ */
addMeasurePoint(pickInfo: PickingInfo) { addMeasurePoint(pickInfo: PickingInfo) {
console.log("测量", pickInfo);
if (this.currentMeasureInfo != null) { if (this.currentMeasureInfo != null) {
this.currentMeasureInfo.addPoint(pickInfo.pickedPoint); this.currentMeasureInfo.addPoint(pickInfo.pickedPoint);
} }

8
src/app/babylon/view/building-window/building-ui-item.ts

@ -212,6 +212,14 @@ export class BuildingUIItem {
} }
/**
*
* @param mesh
*/
createAQSSFromMesh(mesh: AbstractMesh) {
FacilityWindow.instance.createAQSSFromMesh(mesh);
}
/** /**
* *
* @param mesh * @param mesh

69
src/app/babylon/view/building-window/building-window.ts

@ -1,5 +1,5 @@
import { AbstractMesh, Material, Mesh } from "@babylonjs/core"; import { AbstractMesh, Material, Mesh, PBRMaterial, Texture } from "@babylonjs/core";
import { PlanComponent } from "src/app/pages/plan/plan.component"; import { PlanComponent } from "src/app/pages/plan/plan.component";
import { DataManager } from "../../controller/data-manager"; import { DataManager } from "../../controller/data-manager";
import { InfoManager } from "../../controller/info-manager"; import { InfoManager } from "../../controller/info-manager";
@ -276,7 +276,10 @@ export class BuildingWindow extends UIBase {
this.three = PlanComponent.instance; this.three = PlanComponent.instance;
this.three.buildingUIItems = this.buildingUIItems this.three.buildingUIItems = this.buildingUIItems
this.buildingUIItems.length ? this.three.beforeOneBuildingID = this.three.buildingUIItems[0].getBuildingID() : null this.buildingUIItems.length ? this.three.beforeOneBuildingID = this.three.buildingUIItems[0].getBuildingID() : null
let instance = this;
SceneManager.Instance.scene.onBeforeRenderObservable.add(() => {
instance.onUpdate();
})
} }
onShow() { onShow() {
@ -289,6 +292,11 @@ export class BuildingWindow extends UIBase {
super.onHide(); super.onHide();
} }
onUpdate() {
this.updateUVAnim();
}
//#endregion //#endregion
@ -335,6 +343,8 @@ export class BuildingWindow extends UIBase {
console.log("选中建筑", modelInfo); console.log("选中建筑", modelInfo);
this.showJYZModules(JYZInfoMoudleType.AQSS, false); this.showJYZModules(JYZInfoMoudleType.AQSS, false);
this.showJYZModules(JYZInfoMoudleType.YQHSGX, false);
this.showJYZModules(JYZInfoMoudleType.YQHSGX, false);
//this.onChangeCurrentBuildingItem(item); //this.onChangeCurrentBuildingItem(item);
@ -573,6 +583,11 @@ export class BuildingWindow extends UIBase {
*/ */
readonly c_xiaoFang = "XF_"; readonly c_xiaoFang = "XF_";
/**
*
*/
readonly c_shuSan = "AQSS_";
/** /**
* *
*/ */
@ -629,6 +644,9 @@ export class BuildingWindow extends UIBase {
{ {
this.currentBuidngItem.createFacilityByMesh(allNode[i]); this.currentBuidngItem.createFacilityByMesh(allNode[i]);
} }
else if (TsTool.stringContain(nodeName, this.c_shuSan)) {
this.currentBuidngItem.createAQSSFromMesh(allNode[i]);//安全疏散
}
else if (TsTool.stringContain(nodeName, this.c_jiaYou))//加油站 else if (TsTool.stringContain(nodeName, this.c_jiaYou))//加油站
{ {
this.currentBuidngItem.createOilingByMesh(allNode[i]); this.currentBuidngItem.createOilingByMesh(allNode[i]);
@ -647,6 +665,11 @@ export class BuildingWindow extends UIBase {
//#region 加油站基本信息模块的显隐表现 //#region 加油站基本信息模块的显隐表现
/**
* UV动画速度
*/
readonly c_uvAnimSpeed = 0.001;
/** /**
* *
*/ */
@ -672,6 +695,8 @@ export class BuildingWindow extends UIBase {
*/ */
currentZPShow: boolean = true; currentZPShow: boolean = true;
/** /**
* *
* @param type * @param type
@ -702,17 +727,12 @@ export class BuildingWindow extends UIBase {
} }
//阻挡类物体 //阻挡类物体
let zdByType: FacilityInfoByType[] = []; let zdByType: FacilityInfoByType[] = [];
if (this.zdByMoudle.has(type)) { if (this.zdByMoudle.has(type)) {
zdByType = this.zdByMoudle.get(type); zdByType = this.zdByMoudle.get(type);
console.log("查找阻挡物", type, zdByType);
} }
else { else {
console.log("没找到阻挡物", type, zdByType);
} }
for (let i = 0; i < zdByType.length; i++) { for (let i = 0; i < zdByType.length; i++) {
let infos = zdByType[i].facilityInfo; let infos = zdByType[i].facilityInfo;
@ -722,6 +742,7 @@ export class BuildingWindow extends UIBase {
} }
} }
} }
if (show) { if (show) {
this.currentJYZInfoMoudleType = type; this.currentJYZInfoMoudleType = type;
} }
@ -841,6 +862,7 @@ export class BuildingWindow extends UIBase {
if (!isRepeat)//不重复,就添加进去 if (!isRepeat)//不重复,就添加进去
{ {
this.mat_UV.get(moudleType).push(l_mat); this.mat_UV.get(moudleType).push(l_mat);
console.log("找到uv", l_mat);
} }
} }
} }
@ -859,18 +881,39 @@ export class BuildingWindow extends UIBase {
for (let i = 0; i < childMesh.length; i++) { for (let i = 0; i < childMesh.length; i++) {
let mat = childMesh[i].material; let mat = childMesh[i].material;
if (TsTool.stringContain(mat.name, this.c_MAT_UV)) { if (TsTool.stringContain(mat.name, this.c_MAT_UV)) {
// for(let j =0;j< result.length;j++)
// {
// if(mat != result[j])
// {
result.push(mat); result.push(mat);
// }
// }
} }
} }
return result; return result;
} }
/**
* uv动画 update
*/
updateUVAnim() {
// console.log("uv", this.mat_UV);
if (this.mat_UV == null || this.currentJYZInfoMoudleType == null) {
return;
}
let mats = this.mat_UV.get(this.currentJYZInfoMoudleType);
if (mats == null) {
return;
}
for (let i = 0; i < mats.length; i++) {
let mat = mats[i];
if (mat instanceof PBRMaterial) {
(mat.albedoTexture as Texture).vOffset += SceneManager.Instance.scene.deltaTime * this.c_uvAnimSpeed;
}
}
}
/** /**
* *
*/ */

19
src/app/babylon/view/facility-window/facility-window.ts

@ -587,12 +587,6 @@ export class FacilityWindow extends UIBase {
else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHT)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_MHT)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_MHT); this.createNewFacilityByMesh(mesh, FacilityType.XF_MHT);
} }
else if (TsTool.stringContain(mesh.name, FacilityType.AQSS_SSD)) {
this.createNewFacilityByMesh(mesh, FacilityType.AQSS_SSD);
}
else if (TsTool.stringContain(mesh.name, FacilityType.AQSS_TSLX)) {
this.createNewFacilityByMesh(mesh, FacilityType.AQSS_TSLX);
}
else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFCM)) { else if (TsTool.stringContain(mesh.name, FacilityType.XF_XFCM)) {
this.createNewFacilityByMesh(mesh, FacilityType.XF_XFCM); this.createNewFacilityByMesh(mesh, FacilityType.XF_XFCM);
} }
@ -610,6 +604,19 @@ export class FacilityWindow extends UIBase {
} }
} }
/**
*
* @param mesh
*/
createAQSSFromMesh(mesh: AbstractMesh) {
if (TsTool.stringContain(mesh.name, FacilityType.AQSS_SSD)) {
this.createNewFacilityByMesh(mesh, FacilityType.AQSS_SSD);
}
else if (TsTool.stringContain(mesh.name, FacilityType.AQSS_TSLX)) {
this.createNewFacilityByMesh(mesh, FacilityType.AQSS_TSLX);
}
}
/** /**
* *
* @param mesh * @param mesh

4
src/app/pages/plan/plan.component.ts

@ -59,10 +59,10 @@ export class PlanComponent implements OnInit {
loginStatus.getInstitutionListFromServe((result: InsitutionDataSimple[], data: any) => { loginStatus.getInstitutionListFromServe((result: InsitutionDataSimple[], data: any) => {
if (ModeManager.institutionDemoKey == ModeManager.c_demoKey_null) { //无指定测试单位,则为正式启动,根据当前单位key寻找 if (ModeManager.institutionDemoKey == ModeManager.c_demoKey_null) { //无指定测试单位,则为正式启动,根据当前单位key寻找
let key = 'ceshi'; let key = 'ceshi';
console.log("获取数据", data); // console.log("获取数据", data);
let find = data.find(item => { return item.key === key }) let find = data.find(item => { return item.key === key })
if (find) { //如果在data中找到了对应的单位key,则表示已经有三维数据,直接进入 if (find) { //如果在data中找到了对应的单位key,则表示已经有三维数据,直接进入
console.log("找到已有单位" + key); // console.log("找到已有单位" + key);
this.beforeOneSatus = StatusManager.getStatus<LoginSatus>(LoginSatus); this.beforeOneSatus = StatusManager.getStatus<LoginSatus>(LoginSatus);
this.beforeOneSatus.onSelectInsSuccess(find) this.beforeOneSatus.onSelectInsSuccess(find)
} else { //如果没有找到对应的单位key,则调用新建单位 } else { //如果没有找到对应的单位key,则调用新建单位

Loading…
Cancel
Save