From 9aa8106d88fc3070498493e2819922f7ac31746e Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期三, 09 四月 2025 15:09:05 +0800 Subject: [PATCH] 增加BIMFACE水流动画效果 --- WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js | 141 +++++++++++++++++++++++++---------------------- 1 files changed, 75 insertions(+), 66 deletions(-) diff --git a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js index fd4021f..2150699 100644 --- a/WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js +++ b/WinFrmUI/Yw.WinFrmUI.Bimface.Core/bimface/js/LogicFlowEffect.js @@ -1,18 +1,8 @@ -锘� -let _flowAnimationContainer;//姘存祦鍔ㄧ敾瀹瑰櫒 -let _flowImgSrc = "https://static.bimface.com/attach/34d0d3aeb2e348aea5f3203b760ca667_flow5.png";//姘存祦鏉愯川鍥剧墖 +锘縧et _flowImgSrc = "https://static.bimface.com/attach/34d0d3aeb2e348aea5f3203b760ca667_flow5.png";//姘存祦鏉愯川鍥剧墖 let _flowImgLocal = _base64_flow_effect.FlowEffect;//鏈湴姘存祦鏉愯川鍥剧墖,娴嬭瘯娌℃湁閫氳繃 let _flowEffectList = new Set();//姘存祦鍔ㄧ敾鍒楄〃 +let _flowMaterialContainer;//姘存祦鏉愯川瀹瑰櫒 - -//鍔犺浇姘存祦鍔ㄧ敾 -function loadFlowEffect(item) { - unloadFlowEffect(); - let flowMaterial = createFlowMaterial(item); - let flowEffect = createFlowEffect(flowMaterial, item); - flowEffect.play(); - renderFlowEffect(); -} //鍔犺浇姘存祦鍔ㄧ敾鍒楄〃 function loadFlowEffectList(data) { @@ -23,7 +13,28 @@ createFlowEffect(flowMaterial, x); }); playFlowEffect(); - renderFlowEffect(); + } +} + +//鍔犺浇姘存祦鍔ㄧ敾 +function loadFlowEffect(item) { + unloadFlowEffect(); + let flowMaterial = createFlowMaterial(item); + var flowEffect = createFlowEffect(flowMaterial, x); + flowEffect.play(); +} + +//鏇存柊姘存祦鍔ㄧ敾鍒楄〃 +function updateFlowEffectList(data) { + if (data != null && data.length > 0) { + if (_flowEffectList.size > 0) { + let flowEffectId = getFlowEffectId(item.id); + _flowEffectList.forEach(x => { + if (x.getId() == flowEffectId) { + x.setSpeed([item.speedx, item.speedy]); + } + }); + } } } @@ -39,12 +50,19 @@ } } -//鏇存柊姘存祦鍔ㄧ敾鍒楄〃 -function updateFlowEffectList(data) { - if (data != null && data.length > 0) { - data.forEach(x => { - updateFlowEffect(x); - }); +//鍗歌浇姘存祦鍔ㄧ敾 +function unloadFlowEffect() { + if (_flowEffectList.size > 0) { + _flowEffectList.forEach(x => x.stop()); + _flowEffectList.clear(); + if (_flowMaterialContainer != null) { + let allMaterialList = _flowMaterialContainer.getAllMaterials(); + if (allMaterialList != null && allMaterialList.length > 0) { + allMaterialList.forEach(x => { + x.clearOverrideComponentsMaterial(); + }); + } + } } } @@ -59,57 +77,17 @@ } }); if (flowEffect != null) { + flowEffect.stop(); _flowEffectList.delete(flowEffect); - let flowMaterialId = getFlowMaterialId(id); - initialFlowAnimationContainer(); - let flowMaterial = _flowAnimationContainer.getMaterialById(flowMaterialId) - if (flowMaterial != null) { - flowMaterial.clearOverrideComponentsMaterial(); - _flowAnimationContainer.removeMaterialById(flowMaterialId) + if (_flowMaterialContainer != null) { + let flowMaterialId = getFlowMaterialId(id); + let flowMaterial = _flowMaterialContainer.getMaterialById(flowMaterialId) + if (flowMaterial != null) { + flowMaterial.clearOverrideComponentsMaterial(); + } } } } -} - -//鍗歌浇姘存祦鍔ㄧ敾 -function unloadFlowEffect() { - if (_flowEffectList.size > 0) { - _flowEffectList.clear(); - initialFlowAnimationContainer(); - let allMaterialList = _flowAnimationContainer.getAllMaterials(); - if (allMaterialList != null && allMaterialList.length > 0) { - allMaterialList.forEach(x => { - x.clearOverrideComponentsMaterial(); - }); - } - _flowAnimationContainer.clear(); - } -} - -//鍒濆鍖栨按娴佸姩鐢诲鍣� -function initialFlowAnimationContainer() { - if (_flowAnimationContainer == null) { - // 鏋勯�犳按娴佹潗璐ㄥ鍣� - _flowAnimationContainer = new Glodon.Bimface.Plugins.Material.MaterialContainer(); - } -} - -//鍒涘缓姘存祦鏉愯川 -function createFlowMaterial(item) { - initialFlowAnimationContainer(); - // 鏋勯�犳潗璐ㄩ厤缃� - let flowMaterialConfig = new Glodon.Bimface.Plugins.Material.MaterialConfig(); - flowMaterialConfig.viewer = _viewer; - flowMaterialConfig.src = _flowImgLocal; - 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; } //鍒涘缓姘存祦鍔ㄧ敾 @@ -126,6 +104,37 @@ return flowEffect; } +//鍒涘缓姘存祦鏉愯川 +function createFlowMaterial(item) { + //鍒濆鍖栨按娴佹潗璐ㄥ鍣� + initialFlowMaterialContainer(); + var flowMaterialId = getFlowMaterialId(item.id); + let flowMaterial = _flowMaterialContainer.getMaterialById(flowMaterialId); + if (flowMaterial == null) { + // 鏋勯�犳潗璐ㄩ厤缃� + let flowMaterialConfig = new Glodon.Bimface.Plugins.Material.MaterialConfig(); + flowMaterialConfig.viewer = _viewer; + flowMaterialConfig.src = _flowImgLocal; + flowMaterialConfig.rotation = item.rotation; + flowMaterialConfig.offset = [0, 0]; + flowMaterialConfig.scale = [0.1524, 0.1524]; + flowMaterialConfig.id = flowMaterialId; + // 鏋勯�犳潗璐ㄥ璞� + flowMaterial = new Glodon.Bimface.Plugins.Material.Material(flowMaterialConfig); + _flowMaterialContainer.addMaterial(flowMaterial); + } + flowMaterial.overrideComponentsMaterialById([item.id]);//鏁扮粍 + return flowMaterial; +} + +//鍒濆鍖栨按娴佹潗璐ㄥ鍣� +function initialFlowMaterialContainer() { + if (_flowMaterialContainer == null) { + // 鏋勯�犳按娴佹潗璐ㄥ鍣� + _flowMaterialContainer = new Glodon.Bimface.Plugins.Material.MaterialContainer(); + } +} + //鑾峰彇姘存祦鍔ㄧ敾id function getFlowEffectId(id) { return "flow-effect-" + id; -- Gitblit v1.9.3