using System.Collections; using System.Collections.Generic; using System.Collections.Concurrent; using UnityEngine; using UnityEditor; #nullable enable namespace Meryel.UnityCodeAssist.Editor { [InitializeOnLoad] public static class MainThreadDispatcher { readonly static ConcurrentBag actions; static MainThreadDispatcher() { actions = new ConcurrentBag(); EditorApplication.update += Update; } static void Update() { while (actions.TryTake(out var action)) { action.Invoke(); } } public static void Add(System.Action action) => actions.Add(action); } }