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 { Quaternion, Vector3 } from '@babylonjs/core';
import { plainToClass } from 'class-transformer';
import { PlanComponent } from 'src/app/pages/plan/plan.component';
import {
BuildingData,
BuildingData_ChemicalPlant,
@ -85,10 +86,11 @@ export class DataManager {
}
console.error("获取单位信息失败,本地捏造数据");
DataManager.initDebugData_institution();
if (onSuccess) {
onSuccess(key);
}
PlanComponent.instance.openSnackBar("获取单位失败,请刷新重试");
// DataManager.initDebugData_institution();
// if (onSuccess) {
// onSuccess(key);
// }
});
}
else {
@ -322,7 +324,7 @@ export class DataManager {
*/
static initDebugData_mark() {
DataManager.allMarkData = AllMarkData.CreateAllMarkData();
console.log(DataManager.allMarkData, "态势标会");
// console.log(DataManager.allMarkData, "态势标会");
}
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);
}
FacilityWindow.instance.createFacility(
modelEditData.facilities[i].facilities[j],
false,
@ -188,6 +189,7 @@ export class InfoManager {
if (ModeManager.currentMode == ModeType.Look) {
modelInfo.setIconEnable(false);//查看模式下隐藏所有设备ui
}
}
);
}

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

@ -133,9 +133,10 @@ export class SceneManager {
Vector3.Zero(), //目标位置
this.scene //定义摄像机所属的场景
);
camera.minZ = 0;//最近拍摄距离
camera.maxZ = 6000; //摄像机拍摄的最远距离
// camera.upperBetaLimit = 1.5; //beta方向上的旋转限制(防止看到模型底面)
camera.lowerRadiusLimit = 3; //相机距离拍摄目标的最小距离(防止穿插)
camera.lowerRadiusLimit = 1; //相机距离拍摄目标的最小距离(防止穿插)
camera.setTarget(Vector3.Zero()); //设置拍摄目标
camera.attachControl(this.canvas, true); //把相机连接到画布
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) {
this.buildingBISrv.getBuildingBasicInfos(key)
.subscribe(data => {
console.log("得到单位信息" + key, data);
//console.log("得到单位信息" + key, data);
if (onSuccess) {
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) {
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];
console.log("找到关键节点wai");
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 { ConfigManager } from "src/app/babylon/controller/config-manager";
import { SceneManager } from "src/app/babylon/controller/scene-manager";
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 { FacilityInfoInSceneWindow } from "src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-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) {
if (this.areaInfo != null) {
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.wheelDeltaPercentage = 0.005;
if (SceneManager.Instance.cameraMode_Is2D) {
let camera = SceneManager.Instance.defaultCamera;
camera.beta = 0;

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

@ -105,7 +105,6 @@ export class MeasureTool {
*
*/
addMeasurePoint(pickInfo: PickingInfo) {
console.log("测量", pickInfo);
if (this.currentMeasureInfo != null) {
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

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

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

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

Loading…
Cancel
Save