Files
2026-07-13 13:13:17 +08:00

47 lines
1.6 KiB
C#

#nullable enable
using System.Diagnostics.CodeAnalysis;
using T3.Core.Model;
using T3.Core.Operator;
namespace T3.Editor.UiModel;
internal static class SymbolUiRegistry
{
public static SymbolUi GetSymbolUi(this Instance instance) => instance.Symbol.GetSymbolUi();
public static bool TryGetSymbolUi(this Symbol symbol, [NotNullWhen(true)] out SymbolUi? symbolUi)
{
var id = symbol.Id;
var package = (EditorSymbolPackage)symbol.SymbolPackage;
return package.TryGetSymbolUi(id, out symbolUi);
}
public static SymbolUi GetSymbolUi(this Symbol symbol)
{
var id = symbol.Id;
var package = (EditorSymbolPackage)symbol.SymbolPackage;
if (package.TryGetSymbolUi(id, out var symbolUi))
return symbolUi!;
throw new Exception($"Can't find symbol ui for symbol {id}");
}
public static bool TryGetSymbolUi(Guid symbolId, [NotNullWhen(true)] out SymbolUi? symbolUi)
{
foreach(var package in SymbolPackage.AllPackages)
{
if (package is not EditorSymbolPackage symbolPackage)
continue;
if (symbolPackage.TryGetSymbolUi(symbolId, out symbolUi))
return true;
}
symbolUi = null;
return false;
}
public static SymbolUi.Child? GetChildUi(this Instance instance) => instance.SymbolChild?.GetChildUi();
public static SymbolUi.Child GetChildUi(this Symbol.Child symbolChild) => symbolChild.Parent!.GetSymbolUi().ChildUis[symbolChild.Id];
}