From 60908c00556f4f53d82f5588ae3013f80c443590 Mon Sep 17 00:00:00 2001
From: duheng <2784771470@qq.com>
Date: 星期四, 14 十一月 2024 17:22:58 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0

---
 WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js |  211 ++++++++++++++++++++++++++++------------------------
 1 files changed, 115 insertions(+), 96 deletions(-)

diff --git a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js
index bb4f219..8a8b286 100644
--- a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js
+++ b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js
@@ -1,94 +1,57 @@
 锘�
 let _flowAnimationContainer;//姘存祦鍔ㄧ敾瀹瑰櫒
 let _flowImgSrc = "https://static.bimface.com/attach/34d0d3aeb2e348aea5f3203b760ca667_flow5.png";//姘存祦鏉愯川鍥剧墖
+let _flowImgLocal = "../img/flowEffect.png";//鏈湴姘存祦鏉愯川鍥剧墖,娴嬭瘯娌℃湁閫氳繃
 let _flowEffectList = new Set();//姘存祦鍔ㄧ敾鍒楄〃
 
-//鍒濆鍖栨按娴佸姩鐢诲鍣�
-function initialFlowAnimationContainer() {
-    if (_flowAnimationContainer == null) {
-        // 鏋勯�犳按娴佹潗璐ㄥ鍣�
-        _flowAnimationContainer = new Glodon.Bimface.Plugins.Material.MaterialContainer();
-    }
-}
 
-//鍒涘缓姘存祦鏉愯川
-function createFlowMaterial(data) {
-    initialFlowAnimationContainer();
-    // 鏋勯�犳潗璐ㄩ厤缃� 
-    let flowMaterialConfig = new Glodon.Bimface.Plugins.Material.MaterialConfig();
-    flowMaterialConfig.viewer = _viewer;
-    flowMaterialConfig.src = _flowImgSrc;
-    flowMaterialConfig.rotation = data.rotation;
-    flowMaterialConfig.offset = [0, 0];
-    flowMaterialConfig.scale = [0.1524, 0.1524];
-    flowMaterialConfig.id = "flow-material-" + data.id;
-    // 鏋勯�犳潗璐ㄥ璞� 
-    let flowMaterial = new Glodon.Bimface.Plugins.Material.Material(flowMaterialConfig);
-    _flowAnimationContainer.addMaterial(flowMaterial);
-    flowMaterial.overrideComponentsMaterialById([data.id]);//鏁扮粍
-    return flowMaterial;
-}
-
-//鍒涘缓姘存祦鍔ㄧ敾
-function createFlowEffect(material, data) {
-    // 鏋勯�犳按娴佸姩鐢婚厤缃�
-    let flowEffectConfig = new Glodon.Bimface.Plugins.Animation.FlowEffectConfig();
-    flowEffectConfig.material = material;
-    flowEffectConfig.speed = [data.speed, 0];
-    flowEffectConfig.viewer = _viewer;
-    flowEffectConfig.id = "flow-effect-" + data.id;
-    //鏋勯�犳按娴佸姩鐢�
-    let flowEffect = new Glodon.Bimface.Plugins.Animation.FlowEffect(flowEffectConfig);
-    _flowEffectList.add(flowEffect);
-    return flowEffect;
-}
-
-//閲嶇粯姘存祦鍔ㄧ敾
-function renderFlowEffect() {
-    // 娓叉煋涓夌淮妯″瀷锛屽姞杞藉浘鐗囪祫婧愰渶瑕佹椂闂达紝姝ゅ璁惧畾浜�500ms鐨勫欢杩�
-    setTimeout("_viewer.render()", 500);
-}
-
-//寮�濮嬫墍鏈夋按娴佸姩鐢�
-function playAllFlowEffectList() {
-    if (_flowEffectList.size > 0) {
-        _flowEffectList.forEach(x => x.play());
-    }
-}
-
-//鍋滄鎵�鏈夋按娴佸姩鐢�
-function stopAllFlowEffectList() {
-    if (_flowEffectList.size > 0) {
-        _flowEffectList.forEach(x => x.stop());
-    }
-}
-
-//鍔犺浇姘存祦鏉愯川
-function loadFlowMaterial(data) {
-    unloadAllFlowMaterialList();
-    let flowMaterial = createFlowMaterial(data);
-    let flowEffect = createFlowEffect(flowMaterial, data);
+//鍔犺浇姘存祦鍔ㄧ敾
+function loadFlowEffect(item) {
+    unloadFlowEffect();
+    let flowMaterial = createFlowMaterial(item);
+    let flowEffect = createFlowEffect(flowMaterial, item);
     flowEffect.play();
     renderFlowEffect();
 }
 
-//鍔犺浇鎵�鏈夋按娴佹潗璐�
-function loadAllFlowMaterialList(data) {
-    unloadAllFlowMaterialList();
+//鍔犺浇姘存祦鍔ㄧ敾鍒楄〃
+function loadFlowEffectList(data) {
+    unloadFlowEffect();
     if (data != null && data.length > 0) {
-        data.foreach(x => {
+        data.forEach(x => {
             let flowMaterial = createFlowMaterial(x);
-            let flowEffect = createFlowEffect(flowMaterial, x);
+            createFlowEffect(flowMaterial, x);
         });
-        playAllFlowEffectList();
+        playFlowEffect();
         renderFlowEffect();
     }
 }
 
-//閫氳繃id鍗歌浇姘存祦鏉愯川
-function uploadFlowMaterialById(id) {
+//鏇存柊姘存祦鍔ㄧ敾
+function updateFlowEffect(item) {
     if (_flowEffectList.size > 0) {
-        let flowEffectId = "flow-effect-" + id;
+        let flowEffectId = getFlowEffectId(item.id);
+        _flowEffectList.forEach(x => {
+            if (x.getId() == flowEffectId) {
+                x.setSpeed([item.speedx, item.speedy]);
+            }
+        });
+    }
+}
+
+//鏇存柊姘存祦鍔ㄧ敾鍒楄〃
+function updateFlowEffectList(data) {
+    if (data != null && data.length > 0) {
+        data.forEach(x => {
+            updateFlowEffect(x);
+        });
+    }
+}
+
+//閫氳繃id鍗歌浇姘存祦鍔ㄧ敾
+function unloadFlowEffectById(id) {
+    if (_flowEffectList.size > 0) {
+        let flowEffectId = getFlowEffectId(id);
         let flowEffect = null;
         _flowEffectList.forEach(x => {
             if (x.getId() == flowEffectId) {
@@ -96,9 +59,8 @@
             }
         });
         if (flowEffect != null) {
-            flowEffect.stop();
             _flowEffectList.delete(flowEffect);
-            let flowMaterialId = "flow-material-" + id;
+            let flowMaterialId = getFlowMaterialId(id);
             initialFlowAnimationContainer();
             let flowMaterial = _flowAnimationContainer.getMaterialById(flowMaterialId)
             if (flowMaterial != null) {
@@ -109,35 +71,92 @@
     }
 }
 
-//鍗歌浇姘存祦鏉愯川
-function unloadAllFlowMaterialList() {
+//鍗歌浇姘存祦鍔ㄧ敾
+function unloadFlowEffect() {
     if (_flowEffectList.size > 0) {
-        _flowEffectList.forEach(x => {
-            x.stop();
-        });
         _flowEffectList.clear();
-        clearFlowMaterial();
-    }
-    initialFlowAnimationContainer();
-    let flowMaterial = _flowAnimationContainer.getMaterialById(id)
-    if (flowMaterial != null) {
-        flowMaterial.clearOverrideComponentsMaterial();
-        _flowAnimationContainer.removeMaterialById(id)
+        initialFlowAnimationContainer();
+        let allMaterialList = _flowAnimationContainer.getAllMaterials();
+        if (allMaterialList != null && allMaterialList.length > 0) {
+            allMaterialList.forEach(x => {
+                x.clearOverrideComponentsMaterial();
+            });
+        }
+        _flowAnimationContainer.clear();
     }
 }
 
-//娓呴櫎娴侀噺姘磋川
-function clearFlowMaterial() {
-    initialFlowAnimationContainer();
-    var allMaterialList = _flowAnimationContainer.getAllMaterials();
-    if (allMaterialList != null && allMaterialList.length > 0) {
-        allMaterialList.foreach(x => {
-            x.clearOverrideComponentsMaterial();
-        });
+//鍒濆鍖栨按娴佸姩鐢诲鍣�
+function initialFlowAnimationContainer() {
+    if (_flowAnimationContainer == null) {
+        // 鏋勯�犳按娴佹潗璐ㄥ鍣�
+        _flowAnimationContainer = new Glodon.Bimface.Plugins.Material.MaterialContainer();
     }
-    _flowAnimationContainer.clear();
 }
 
+//鍒涘缓姘存祦鏉愯川
+function createFlowMaterial(item) {
+    initialFlowAnimationContainer();
+    // 鏋勯�犳潗璐ㄩ厤缃� 
+    let flowMaterialConfig = new Glodon.Bimface.Plugins.Material.MaterialConfig();
+    flowMaterialConfig.viewer = _viewer;
+    flowMaterialConfig.src = _flowImgSrc;
+    flowMaterialConfig.rotation = item.rotation;
+    flowMaterialConfig.offset = [0, 0];
+    flowMaterialConfig.scale = [0.1524, 0.1524];
+    flowMaterialConfig.id = getFlowMaterialId(item.id);
+    // 鏋勯�犳潗璐ㄥ璞� 
+    let flowMaterial = new Glodon.Bimface.Plugins.Material.Material(flowMaterialConfig);
+    _flowAnimationContainer.addMaterial(flowMaterial);
+    flowMaterial.overrideComponentsMaterialById([item.id]);//鏁扮粍
+    return flowMaterial;
+}
+
+//鍒涘缓姘存祦鍔ㄧ敾
+function createFlowEffect(material, item) {
+    // 鏋勯�犳按娴佸姩鐢婚厤缃�
+    let flowEffectConfig = new Glodon.Bimface.Plugins.Animation.FlowEffectConfig();
+    flowEffectConfig.material = material;
+    flowEffectConfig.speed = [item.speedx, item.speedy];
+    flowEffectConfig.viewer = _viewer;
+    flowEffectConfig.id = getFlowEffectId(item.id);
+    //鏋勯�犳按娴佸姩鐢�
+    let flowEffect = new Glodon.Bimface.Plugins.Animation.FlowEffect(flowEffectConfig);
+    _flowEffectList.add(flowEffect);
+    return flowEffect;
+}
+
+//鑾峰彇姘存祦鍔ㄧ敾id
+function getFlowEffectId(id) {
+    return "flow-effect-" + id;
+}
+
+//鑾峰彇姘存祦鏉愯川id
+function getFlowMaterialId(id) {
+    return "flow-material-" + id;
+}
+
+//寮�濮嬫按娴佸姩鐢�
+function playFlowEffect() {
+    if (_flowEffectList.size > 0) {
+        _flowEffectList.forEach(x => x.play());
+    }
+}
+
+//鍋滄姘存祦鍔ㄧ敾
+function stopFlowEffect() {
+    if (_flowEffectList.size > 0) {
+        _flowEffectList.forEach(x => x.stop());
+    }
+}
+
+//閲嶇粯姘存祦鍔ㄧ敾 
+function renderFlowEffect() {
+    // 娓叉煋涓夌淮妯″瀷锛屽姞杞藉浘鐗囪祫婧愰渶瑕佹椂闂达紝姝ゅ璁惧畾浜�500ms鐨勫欢杩�
+    setTimeout("_viewer.render()", 500);
+}
+
+
 
 
 

--
Gitblit v1.9.3