internal void Update() { for (var i = 0; i < _chains.Count; i++) { AsyncChain chain = _chains[i]; ChainLayer layer = _chainsLayers[(int)chain.layer]; if (layer.paused) { continue; } AsyncCommandResult updateResult = chain.UpdateChain(); if (updateResult == AsyncCommandResult.Exception) { CustomDebug.Log($"Cain '{chain.id}' finished terminated with exception"); } if (!chain.isComplete && updateResult == AsyncCommandResult.Ok) { continue; } chain.ReportComplete(); _chainsLayers[(int)chain.layer].Dec(); _chains.RemoveAt(i); i--; } }
internal PlannerSynchronizationContext() { _chainsLayers = new ChainLayer[(int)AsyncLayer.Game + 1]; for (var i = 0; i < _chainsLayers.Length; i++) { _chainsLayers[i] = new ChainLayer(); } }