private void RunUpdate(UpdateNode <TTrigger> node, UpdateChain chain) { var triggers = chain.CurrentTriggers; triggers.Clear(); triggers.UnionWith(node.IncommingTriggers); triggers.IntersectWith(TriggeredUpdatesSinceStart); if (triggers.Count <= 0) { return; } try { SetCurrentNode(node); node.Function.Invoke(chain); } catch (Exception e) { var messageBuilder = new StringBuilder(); messageBuilder .Append(CurrentNodeExceptionHeader) .AppendLine(" threw an exception:") .AppendLine(e.Message) .AppendLine() .Append(UpdateChainAsString); ThrowUpdateError(new UpdateGraphException(messageBuilder.ToString(), e)); } }
private void RunUpdates(List <UpdateNode <TTrigger> > sortedNodes) { var triggers = new UpdateChain(this); foreach (var node in sortedNodes) { RunUpdate(node, triggers); } }