| | |
| | | |
| | | let _flowAnimationContainer;//水流动画容器 |
| | | let _flowImgSrc = "https://static.bimface.com/attach/34d0d3aeb2e348aea5f3203b760ca667_flow5.png";//水流材质图片 |
| | | let _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) { |
| | |
| | | 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]); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | //更新水流动画列表 |
| | | 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(); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | }); |
| | | 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; |
| | | } |
| | | |
| | | //创建水流动画 |
| | |
| | | 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; |