feat: update Godot integration and coordinated package dependencies
Publish UPM package / publish (push) Successful in 3s
Publish NuGet packages / publish (push) Successful in 3m43s

This commit is contained in:
cneicy committed 2026-11-06 19:13:18 +08:00
1 parent 95844e11ff
commit 901ad18453
15 files changed
+576 -55

No files matched your search

+24 -2
View File
@@ -37,7 +37,8 @@ namespace ShrinkEventBus
}
#if UNITY_5_3_OR_NEWER
internal sealed class ShrinkUnityMainThreadDispatcher : MainThreadDispatcherContract
internal sealed class ShrinkUnityMainThreadDispatcher : MainThreadDispatcherContract,
ShrinkSDK.Runtime.IShrinkDeferredMainThreadDispatcher
{
public bool IsMainThread => Cysharp.Threading.Tasks.PlayerLoopHelper.IsMainThread;
@@ -50,9 +51,20 @@ namespace ShrinkEventBus
action);
return true;
}
public bool TryPostDeferred(Action action)
{
if (action == null)
throw new ArgumentNullException(nameof(action));
Cysharp.Threading.Tasks.PlayerLoopHelper.AddContinuation(
Cysharp.Threading.Tasks.PlayerLoopTiming.Update,
action);
return true;
}
}
#else
internal sealed class ShrinkSynchronizationContextDispatcher : MainThreadDispatcherContract
internal sealed class ShrinkSynchronizationContextDispatcher : MainThreadDispatcherContract,
ShrinkSDK.Runtime.IShrinkDeferredMainThreadDispatcher
{
private readonly SynchronizationContext? _context;
private readonly int _threadId;
@@ -79,6 +91,16 @@ namespace ShrinkEventBus
_context.Post(static state => ((Action)state!).Invoke(), action);
return true;
}
public bool TryPostDeferred(Action action)
{
if (action == null)
throw new ArgumentNullException(nameof(action));
if (_context == null)
return false;
_context.Post(static state => ((Action)state!).Invoke(), action);
return true;
}
}
#endif
}