Initial commit: Unity WordConnect project
This commit is contained in:
@ -0,0 +1,43 @@
|
||||
using VContainer.Internal;
|
||||
|
||||
namespace VContainer.Unity
|
||||
{
|
||||
interface IPlayerLoopItem
|
||||
{
|
||||
bool MoveNext();
|
||||
}
|
||||
|
||||
sealed class PlayerLoopRunner
|
||||
{
|
||||
readonly FreeList<IPlayerLoopItem> runners = new FreeList<IPlayerLoopItem>(16);
|
||||
|
||||
int running;
|
||||
|
||||
public void Dispatch(IPlayerLoopItem item)
|
||||
{
|
||||
runners.Add(item);
|
||||
}
|
||||
|
||||
public void Run()
|
||||
{
|
||||
var span =
|
||||
#if NETSTANDARD2_1
|
||||
runners.AsSpan();
|
||||
#else
|
||||
runners;
|
||||
#endif
|
||||
for (var i = 0; i < span.Length; i++)
|
||||
{
|
||||
var item = span[i];
|
||||
if (item != null)
|
||||
{
|
||||
var continued = item.MoveNext();
|
||||
if (!continued)
|
||||
{
|
||||
runners.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user