populate sln explorer tree in background thread

This commit is contained in:
Matt Parker
2025-12-13 14:31:31 +10:00
parent a74553a4ca
commit d981013af3
5 changed files with 63 additions and 19 deletions

View File

@@ -29,4 +29,23 @@ public static class GodotNodeExtensions
node.TreeExited += () => disposable.Dispose();
return disposable;
}
public static void AddToDeferred<T>(this T disposable, Node node) where T : IDisposable
{
Callable.From(() =>
{
// Note: Dispose when tree exited, so if node is not inside tree, dispose immediately.
if (!node.IsInsideTree())
{
if (!node.IsNodeReady()) // Before enter tree
{
GD.PrintErr("AddTo does not support to use before enter tree.");
}
disposable.Dispose();
}
node.TreeExited += () => disposable.Dispose();
}).CallDeferred();
}
}