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);
}
}
}
}