namespace Yw.WpfUI.Hydro
|
{
|
/// <summary>
|
/// 简单状态管理器
|
/// </summary>
|
internal class VisualStateManager
|
{
|
|
//缓存
|
private readonly Dictionary<VisualL3d, eVisualState> _cache = new();
|
|
/// <summary>
|
/// 初始化
|
/// </summary>
|
public void Initial(List<VisualL3d> allVisualList)
|
{
|
_cache.Clear();
|
allVisualList?.ForEach(x => _cache.Add(x, eVisualState.Normal));
|
}
|
|
/// <summary>
|
/// 设置
|
/// </summary>
|
public void SetState(VisualL3d visual, eVisualState state)
|
{
|
if (visual == null)
|
{
|
return;
|
}
|
_cache[visual] = state;
|
}
|
|
/// <summary>
|
/// 加载状态
|
/// </summary>
|
public void LoadState(VisualL3d visual, eVisualState state)
|
{
|
var origin = GetState(visual);
|
_cache[visual] = origin | state;
|
}
|
|
/// <summary>
|
/// 卸载状态
|
/// </summary>
|
public void UnloadState(VisualL3d visual, eVisualState state)
|
{
|
var origin = GetState(visual);
|
_cache[visual] = origin ^ state;
|
}
|
|
/// <summary>
|
/// 获取状态
|
/// </summary>
|
public eVisualState GetState(VisualL3d visual)
|
{
|
if (visual == null)
|
{
|
return eVisualState.Normal;
|
}
|
if (!_cache.ContainsKey(visual))
|
{
|
return eVisualState.Normal;
|
}
|
return _cache[visual];
|
}
|
|
/// <summary>
|
/// 获取有效状态
|
/// </summary>
|
public eVisualState GetEffectState(VisualL3d visual)
|
{
|
var state = GetState(visual);
|
if (state == eVisualState.None)
|
{
|
return eVisualState.Normal;
|
}
|
if ((state & eVisualState.Highlight) == eVisualState.Highlight)
|
{
|
return eVisualState.Highlight;
|
}
|
if ((state & eVisualState.Selection) == eVisualState.Selection)
|
{
|
return eVisualState.Selection;
|
}
|
if ((state & eVisualState.OverrideColor) == eVisualState.OverrideColor)
|
{
|
return eVisualState.OverrideColor;
|
}
|
return eVisualState.Normal;
|
}
|
|
|
}
|
}
|