using OpenTK.Mathematics;
namespace Yw.WinFrmUI.Hydro
{
///
/// 三维点缓存辅助类
///
internal class Vector32dCacheHelper
{
///
///
///
public Vector32dCacheHelper(NetworkL3d nw)
{
_nw = nw;
Initial();
}
private NetworkL3d _nw = null;
private Dictionary> _dict = new();
//初始化
private void Initial()
{
if (_nw == null)
{
return;
}
foreach (var visual in _nw.Visuals)
{
var pts = visual.GetPositions();
var vpts = pts.Select(x => new Vector3(x.X, x.Y, x.Z)).ToList();
_dict.Add(visual.Id, vpts);
}
}
///
/// 获取位置
///
public List GetPositions()
{
if (_dict.Count < 1)
{
return default;
}
return _dict.SelectMany(x => x.Value).ToList();
}
///
/// 获取位置
///
public List GetPositions(string id)
{
if (_dict.ContainsKey(id))
{
return _dict[id];
}
return default;
}
}
}