private Node AddNode(ExpertSystem.Node.Node node) { var name = node.ToString(); var nodeInfoVisualise = DefaultNodeInfo; if (_nodeInfoVisualises.ContainsKey(node.GetType())) { nodeInfoVisualise = _nodeInfoVisualises[node.GetType()]; } switch (node.State) { case true: nodeInfoVisualise.FillColor = TrueStateColor; break; case false: nodeInfoVisualise.FillColor = FalseStateColor; break; case null: nodeInfoVisualise.FillColor = NullStateColor; break; } var isFact = node.GetType() == typeof(AtomNode) && _parser.Facts.Contains(((AtomNode)node).Name); return(AddNode(name, nodeInfoVisualise, isFact)); }
private void AddToGraph(ExpertSystem.Node.Node atom) { if (atom.Visited) { return; } atom.Visited = true; foreach (var atomParent in atom.OperandParents) { AddToGraph(atomParent); } AddNodes(atom, atom.Children); if (atom.GetType() == typeof(ConnectorNode)) { AddNodes(atom, ((ConnectorNode)atom).Operands); } atom.Visited = false; }