namespace Yw.WpfUI.Hydro { /// /// 抽象 /// internal class LogicalFlowDirectionHelper { /// /// /// public LogicalFlowDirectionHelper ( HelixViewport3D viewport, LogicalMaterialHelper materialHelper ) { _viewport = viewport; _materialHelper = materialHelper; } private readonly HelixViewport3D _viewport;//三维组件 private readonly LogicalMaterialHelper _materialHelper;//材质辅助类 private readonly LogicalFlowDirection3DGroup _group = new();//方向组 private readonly Dictionary _cache = new();//缓存 /// /// 设置 /// public void Set(List allLinkList) { Clear(); if (allLinkList == null || allLinkList.Count < 1) { return; } foreach (var link in allLinkList) { var direction = new LogicalFlowDirection3D(link, _materialHelper); _cache.Add(link, direction); _group.Children.Add(direction); } Append(); } /// /// 设置 /// public void Set(Dictionary dict) { Clear(); if (dict == null || dict.Count < 1) { return; } foreach (var item in dict) { var direction = new LogicalFlowDirection3D(item.Key, _materialHelper, item.Value); _cache.Add(item.Key, direction); _group.Children.Add(direction); } Append(); } /// /// 清除 /// public void Clear() { if (_cache.Count > 0) { foreach (var item in _cache) { item.Value.Dispose(); } _cache.Clear(); } _group.Children.Clear(); } //附加 private void Append() { var group = _viewport.Children.OfType().FirstOrDefault(); if (group == null) { _viewport.Children.Add(_group); } } } }