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