Ejemplo n.º 1
0
        private void ProcessNode(Node node)
        {
            for (int i = _processedNodes; i < _nodes.Count; i++)
            {
                if (_nodes[i] != node)
                {
                    continue;
                }

                bool isChanged = false;

                while (i > _processedNodes)
                {
                    // This only happens if we weren't in topo order
                    if (Debugger.IsAttached)
                    {
                        Debugger.Break();
                    }

                    _nodes.Swap(i - 1, i);
                    i--;
                    isChanged = true;
                }

                // Signal that these rows have changed
                if (isChanged)
                {
                    Updated?.Invoke();
                }

                _processedNodes++;
                break;
            }
        }