陈鹏飞 3 years ago
parent
commit
286a6b895a
  1. 8
      src/app/babylon/model/data/mark/mark-plan-data.ts
  2. 4
      src/app/babylon/model/info/mark/model-info-mark.ts
  3. 4
      src/app/babylon/model/info/mark/other/mark-plan-particle-info.ts
  4. 2
      src/app/babylon/model/info/model/model-info.ts
  5. 6
      src/app/babylon/tool/babylon-tool.ts
  6. 4
      src/app/babylon/tool/particle-system-tool.ts
  7. 2
      src/app/babylon/tool/speaking-tool.ts
  8. 36
      src/app/babylon/view/building-window/building-window.ts
  9. 40
      src/app/babylon/view/mark-window/mark-window.ts
  10. 4
      src/app/pages/plan/plan.component.ts
  11. 5
      src/assets/mesh/mark/disaster/dt/DT.gltf.manifest
  12. 5
      src/assets/mesh/mark/disaster/lyd/LYD.gltf.manifest
  13. 5
      src/assets/mesh/mark/disaster/lyx/LYX.gltf.manifest
  14. 5
      src/assets/mesh/mark/disaster/sy/SY.gltf.manifest
  15. 5
      src/assets/mesh/mark/inside/gfmhq/GFMHQ.gltf.manifest
  16. 5
      src/assets/mesh/mark/inside/jyy/JYY.gltf.manifest
  17. 5
      src/assets/mesh/mark/inside/ptmhq/PTMHQ.gltf.manifest
  18. 5
      src/assets/mesh/mark/inside/syy/SYY.gltf.manifest
  19. 5
      src/assets/mesh/mark/inside/tcmhq/TCMHQ.gltf.manifest
  20. 5
      src/assets/mesh/mark/inside/xfsd/XFSD.gltf.manifest
  21. 5
      src/assets/mesh/mark/inside/xfsq/XFSQ.gltf.manifest
  22. 5
      src/assets/mesh/mark/inside/xyy/XYY.gltf.manifest
  23. 5
      src/assets/mesh/mark/inside/ygc/YGC.gltf.manifest
  24. 5
      src/assets/mesh/mark/inside/ygcsj/YGCSJ.gltf.manifest
  25. 5
      src/assets/mesh/mark/inside/yzzg/YZZG.gltf.manifest
  26. 5
      src/assets/mesh/mark/inside/zymbrq/ZYMBRQ.gltf.manifest
  27. 5
      src/assets/mesh/mark/outside/XFC/XFC.gltf.manifest
  28. 5
      src/assets/mesh/mark/outside/XFY/XFY.gltf.manifest

8
src/app/babylon/model/data/mark/mark-plan-data.ts

@ -11,6 +11,9 @@ import { MarkData } from "./mark-data";
*/
export class AllMarkPlanData {
/**
* ID("字符串")
*/
@ -193,6 +196,7 @@ export class MarkPlanData {
*/
export class MarkNodeData {
/**
* id
*/
@ -365,9 +369,9 @@ export class MarkNodeData {
let timeScale = 0.3;
let minTime = 3; //最短停留时间
let minTime = 4; //最短停留时间
let result = textNum * timeScale;
let result = textNum * timeScale + 1;
if (result < minTime) {
result = minTime;
}

4
src/app/babylon/model/info/mark/model-info-mark.ts

@ -267,7 +267,7 @@ export class ModelInfo_mark extends ModelInfo {
// instance.uiFollowHeadBg.widthInPixels = maxWidth;
}, (50));
console.log("喷水", this.taskNeedWaterParticle());
// console.log("喷水", this.taskNeedWaterParticle());
if (this.taskNeedWaterParticle()) {
this.sprinklingWater(true);
@ -426,7 +426,7 @@ export class ModelInfo_mark extends ModelInfo {
// }
}
console.log("喷头", this.node_pz);
// console.log("喷头", this.node_pz);
if (this.node_pz == null) {
result = false;

4
src/app/babylon/model/info/mark/other/mark-plan-particle-info.ts

@ -68,7 +68,7 @@ export class ModelInfo_mark_particle extends ModelInfo_mark {
// instance.modelBox.scaling = new Vector3(100, 300, 100);
ps.emitter = root;
instance.particleSet.systems.push(ps);
console.log(ps.name, instance.isPlaying);
// console.log(ps.name, instance.isPlaying);
if (instance.isPlaying) {
instance.particleSet.start();
}
@ -128,7 +128,7 @@ export class ModelInfo_mark_particle extends ModelInfo_mark {
dispose() {
if (this.particleSet != null) {
console.log("释放粒子", this.particleSet);
// console.log("释放粒子", this.particleSet);
this.particleSet.dispose();
}
super.dispose();

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

@ -229,7 +229,7 @@ export class ModelInfo {
this.uiFollowRoot.dispose();
}
console.log("释放model" + this.key, disposeMesh);
// console.log("释放model" + this.key, disposeMesh);
if (disposeMesh) {
if (this.modelBox != null) {
this.modelBox.dispose();

6
src/app/babylon/tool/babylon-tool.ts

@ -1,3 +1,4 @@
import { NumberValueAccessor } from '@angular/forms';
import {
AbstractMesh,
Animation,
@ -130,7 +131,7 @@ export class BabylonTool {
path = ObjectsService.getFullPath(path); //根据环境,动态改变桶名
}
console.log("异步加载模型" + path + sceneFilename);
// console.log("异步加载模型" + path + sceneFilename);
let modelPath = path + sceneFilename;
LoadTool.add(modelPath, tag);
@ -345,6 +346,7 @@ export class BabylonTool {
radius: number,
alpha: number,
beta: number,
onAnimationEnd?: () => void
) {
//缓动动画
let easingFunction = new QuadraticEase();
@ -416,7 +418,7 @@ export class BabylonTool {
camera.animations.push(anim_a);
camera.animations.push(anim_b);
camera._scene.beginAnimation(camera, 0, allFrame, false);
return camera._scene.beginAnimation(camera, 0, allFrame, false, undefined, onAnimationEnd);
}

4
src/app/babylon/tool/particle-system-tool.ts

@ -67,11 +67,11 @@ export class ParticleSystemTool {
if (instance.psPool.has(path)) {
let set = instance.psPool.get(path);
let result = instance.cloneParticle(set, name);
console.log(set.uniqueId + "克隆特效id", result.uniqueId);
// console.log(set.uniqueId + "克隆特效id", result.uniqueId);
onSuccess(result);
}
else {
console.log("加载特效", name);
// console.log("加载特效", name);
instance.loadPrefab(null, path, true, (value: ParticleSystem) => {
onSuccess(value);
})

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

@ -38,7 +38,7 @@ export class SpeakingTool {
* @param msg
*/
speak(msg: string) {
console.log("阅读" + msg);
// console.log("阅读" + msg);
if (this.isIE()) {
}

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

@ -1,8 +1,10 @@
import { AbstractMesh, Material, Mesh, PBRMaterial, Texture } from "@babylonjs/core";
import { AbstractMesh, Material, Mesh, PBRMaterial, Texture, Animatable } from "@babylonjs/core";
import { PlanComponent } from "src/app/pages/plan/plan.component";
import { ConfigManager } from "../../controller/config-manager";
import { DataManager } from "../../controller/data-manager";
import { EventManager } from "../../controller/event-manager/event-manager";
import { Event_LoadingChange } from "../../controller/event-manager/events/event-loading-change";
import { InfoManager } from "../../controller/info-manager";
import { ModeManager, ModeType } from "../../controller/mode-manager";
import { SceneManager } from "../../controller/scene-manager";
@ -23,6 +25,7 @@ import { ModelInfo_building } from "../../model/info/model/model-info-building";
import { FacilityInfoByType, ModelInfo_facility } from "../../model/info/model/model-info-facility";
import { BabylonTool } from "../../tool/babylon-tool";
import { GizmoTool } from "../../tool/gizmo-tool";
import { LoadTool } from "../../tool/load-tool";
import { TsTool } from "../../tool/ts-tool";
import { FacilityInfoInSceneWindow } from "../facilityinfoinscene-window/facilityinfoinscene-window";
import { MarkWindow } from "../mark-window/mark-window";
@ -49,6 +52,7 @@ export class BuildingWindow extends UIBase {
three: PlanComponent;//前端组件
cameraAnim: Animatable;//相机动画
//#region 与前端对接部分
@ -283,12 +287,15 @@ export class BuildingWindow extends UIBase {
* @param cameraData
* @param showZP
*/
revoverCamera(cameraData: ArcRotateCameraData, showZP: boolean) {
revoverCamera(cameraData: ArcRotateCameraData, showZP: boolean, onAnimationEnd?: () => void) {
this.showZP(showZP);
PlanComponent.instance.isOpenAwning = showZP;
let camera = SceneManager.Instance.defaultCamera;
if (cameraData != null) {
BabylonTool.AnimMoveCameraTargetAB(camera, 60, cameraData.target, cameraData.radius, cameraData.alpha, cameraData.beta);
this.cameraAnim = BabylonTool.AnimMoveCameraTargetAB(camera, 60, cameraData.target, cameraData.radius, cameraData.alpha, cameraData.beta, onAnimationEnd);
if (Event_LoadingChange.isLoading) {
this.cameraAnim.pause();
}
}
}
@ -314,6 +321,10 @@ export class BuildingWindow extends UIBase {
SceneManager.Instance.scene.onBeforeRenderObservable.add(() => {
instance.onUpdate();
})
EventManager.addListener<Event_LoadingChange>(Event_LoadingChange, (eventInfo) => {
instance.onChangeLoading(eventInfo);
});
}
onShow() {
@ -331,6 +342,25 @@ export class BuildingWindow extends UIBase {
}
/**
* loading状态改变时
* @param eventInfo
*/
onChangeLoading(eventInfo: Event_LoadingChange) {
if (eventInfo.showLoading) {
if (this.cameraAnim != null) {
this.cameraAnim.pause();
}
}
else {
if (this.cameraAnim != null) {
this.cameraAnim.restart();
}
}
}
//#endregion

40
src/app/babylon/view/mark-window/mark-window.ts

@ -39,6 +39,12 @@ import { WeatherTool } from "./weather-tool";
export class MarkWindow extends UIBase {
/**
* Key
*/
readonly c_leaveNode: string = "node_leave_";
static instance: MarkWindow;
static s_cameraData: ArcRotateCameraData = null;//预定义的相机数据
static s_preLoadMesh: boolean = false;//预加载所有标绘物(如果是false,则在选中每个标绘物的时候,进行预加载单个)
@ -236,6 +242,7 @@ export class MarkWindow extends UIBase {
*
* @param markPlanId idID
* @param nodeId idid
* @param newName
*/
saveToOldNode(markPlanId: number, nodeId: number, newName?: string) {
let markPlaneData = DataManager.allMarkPlanData.getMarkPlanById(markPlanId);
@ -248,7 +255,7 @@ export class MarkWindow extends UIBase {
let copyNodeData = classToClass(this.currentMarkNodeDataCopy);//覆盖数据
copyNodeData.id = oldNodeData.id;
copyNodeData.index = oldNodeData.index;
if (newName != null) {
if (newName != null && newName != this.c_leaveNode) {
copyNodeData.name = newName;
}
// copyNodeData.name = oldNodeData.name;
@ -321,10 +328,10 @@ export class MarkWindow extends UIBase {
let nodeCopy: MarkNodeData;
if (changeBuildingByUI) //从ui点击切层,
{
console.log(this.currentMarkNodeInfo);
// console.log(this.currentMarkNodeInfo);
if (this.currentMarkNodeInfo == null)//没有当前的markInfo,创建一个游离的节点
{
console.log("拷贝游离节点");
// console.log("拷贝游离节点");
nodeCopy = this.createLeaveNode();
this.savCurrentNodeData(nodeCopy);
}
@ -362,10 +369,14 @@ export class MarkWindow extends UIBase {
this.currentMarkNodeDataCopy = nodeCopy;//更新备份数据
this.currentMarkNodeInfo = new MarkNodeInfo(markPlanData, this.currentMarkNodeDataCopy);
//this.currentMarkNodeDataCopy = classToClass(this.currentMarkNodeInfo.nodeData); //更新备份数据
this.updateNodeInfo();
if (readDescribe) {
this.readDescribe(nodeCopy.describe);
}
this.updateNodeInfo(readDescribe);
// let instance = this;
// if (readDescribe) { //镜头移动完,开始说话
// setTimeout(() => {
// instance.readDescribe(nodeCopy.describe);
// }, MarkNodeData.speakWaitTime * 1000);
// }
}
@ -936,6 +947,8 @@ export class MarkWindow extends UIBase {
//#endregion
//#region 查询类
@ -1009,7 +1022,7 @@ export class MarkWindow extends UIBase {
*
*/
createLeaveNode() {
let result = new MarkNodeData(0, "leave");
let result = new MarkNodeData(0, this.c_leaveNode);
return result;
}
@ -1167,8 +1180,9 @@ export class MarkWindow extends UIBase {
*
*
*
* @param readDescribe: 是否阅读介绍
*/
updateNodeInfo() {
updateNodeInfo(readDescribe = false) {
let environmentData = this.currentMarkNodeInfo.nodeData.getCurrentEnvironmentData();
let cameraData = this.currentMarkNodeInfo.nodeData.cameraData;
let showZP = this.currentMarkNodeInfo.nodeData.showZP;
@ -1198,7 +1212,13 @@ export class MarkWindow extends UIBase {
// }
//仅此分支生效
BuildingWindow.instance.revoverCamera(cameraData, showZP);
//动画还原相机,结束后开始阅读
BuildingWindow.instance.revoverCamera(cameraData, showZP, (() => {
if (readDescribe) {
instance.readDescribe(instance.currentMarkNodeInfo.nodeData.describe);
}
}));
instance.clearEnterObserver(true);

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

@ -82,7 +82,7 @@ export class PlanComponent implements OnInit {
this.getGasStationBaseInfo().then((res: any) => { //获取单位 基本信息
console.log(res, "当前加油站信息")
let simpleData: InsitutionDataSimple = new InsitutionDataSimple();
simpleData.id = res.id || 1; //来自选中的单位的信息 ,测试:1
simpleData.id = res.id || 6; //来自选中的单位的信息 ,测试:1
simpleData.key = `${res.id}` || "ceshi"; //测试:"ceshi"
simpleData.name = res.stationName || "测试"; //来自选中的单位的信息 ,测试:"测试"
@ -91,7 +91,7 @@ export class PlanComponent implements OnInit {
if (ModeManager.institutionDemoKey == ModeManager.c_demoKey_null) { //无指定测试单位,则为正式启动,根据当前单位key寻找
if (has3dData) { //如果已经有三维数据,直接进入
this.beforeOneSatus = StatusManager.getStatus<LoginSatus>(LoginSatus);
console.log("单位数据", simpleData);
// console.log("单位数据", simpleData);
this.beforeOneSatus.onSelectInsSuccess(simpleData)
} else { //如果没有三维数据
if (ModeManager.s_isMakeMode) //内部制作模式下,询问新建

5
src/assets/mesh/mark/disaster/dt/DT.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/disaster/lyd/LYD.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/disaster/lyx/LYX.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/disaster/sy/SY.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/gfmhq/GFMHQ.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/jyy/JYY.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/ptmhq/PTMHQ.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/syy/SYY.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/tcmhq/TCMHQ.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/xfsd/XFSD.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/xfsq/XFSQ.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/xyy/XYY.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/ygc/YGC.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/ygcsj/YGCSJ.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/yzzg/YZZG.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/inside/zymbrq/ZYMBRQ.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/outside/XFC/XFC.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}

5
src/assets/mesh/mark/outside/XFY/XFY.gltf.manifest

@ -0,0 +1,5 @@
{
"version" : 1,
"enableSceneOffline" : true,
"enableTexturesOffline" : true
}
Loading…
Cancel
Save