/// <summary> /// Generates nodes and edges endlessly for demonstration. /// </summary> public void StartGeneration() { lock (_nodeLock) { Color colour = Color.FromArgb(120, Color.White); // Add basis nodes. for (int i = 0; i < 100; i++) { Add(new Node(PseudoRandom.UInt64().ToString(), colour)); } // Connect some basis nodes. for (int i = 0; i < 80; i++) { Node a, b; do { a = _nodes[PseudoRandom.Int32(_nodes.Count - 1)]; b = _nodes[PseudoRandom.Int32(_nodes.Count - 1)]; } while (a == b || a.IsConnectedTo(b)); Connect(a, b); } // Add group nodes. for (int i = 0; i < 200; i++) { Node node = new Node(PseudoRandom.UInt64().ToString(), colour); Connect(node, _nodes[PseudoRandom.Int32(10)]); Add(node); } // Add outlier nodes. for (int i = 0; i < 200; i++) { Node node = new Node(PseudoRandom.UInt64().ToString(), colour); Connect(node, _nodes[PseudoRandom.Int32(_nodes.Count - 1)]); Add(node); } // Connect more nodes. for (int i = 0; i < 50; i++) { Node a, b; do { a = _nodes[PseudoRandom.Int32(_nodes.Count - 1)]; b = _nodes[PseudoRandom.Int32(_nodes.Count - 1)]; } while (a == b || a.IsConnectedTo(b)); Connect(a, b); } } }