private void DrawConditionalNode(Node node, GUIStyle style) { Rect nodeRect = new Rect(node.m_position.x, node.m_position.y, node.m_dimension.x, node.m_dimension.y); // draw plugs on specific node DrawPlug(node.m_inputPlug, nodeRect, m_inputPlugStyle, 1, 1); Plug trueOutput = node.GetOutputPlugAtIndex(0); Plug falseOutput = node.GetOutputPlugAtIndex(1); DrawConditionalOutPlug(trueOutput, nodeRect, m_outputTruePlugStyle, 1, node.m_outputPlugs.Count); DrawConditionalOutPlug(falseOutput, nodeRect, m_outputFalsePlugStyle, 2, node.m_outputPlugs.Count); // drawing the node itself with the contents in it GUI.Box(nodeRect, "", style); float padding = 7f; Rect nodeContentRect = new Rect(node.m_position.x + padding, node.m_position.y + padding, node.m_dimension.x - (2 * padding), node.m_dimension.y - (2 * padding)); BeginArea(nodeContentRect); DialogueData data = m_nodeGraphModel.GetDataFromNodeID(node.m_id); if (data != null) { var rightAlign = new GUIStyle(GUI.skin.label) { alignment = TextAnchor.UpperRight }; Label("Conditional", EditorStyles.boldLabel); Label("True", rightAlign); Label(""); string tag_pattern = "<[^>]+>"; string displayText = Regex.Replace(data.dialogueText, tag_pattern, ""); Label("False", rightAlign); List <string> errors = m_nodeGraphModel.GetErrorMesssages(node.m_id); if (errors.Count > 0) { GUIStyle error_label = new GUIStyle(); error_label.fontStyle = FontStyle.Bold; error_label.normal.textColor = new Color(171f / 255f, 19f / 255f, 0); Label("Errors!!", error_label); } } OutputPlugToNode outputdata = m_nodeGraphModel.GetOutputPlugToNode(node.m_id, 0); if (outputdata != null) { DialogueData inputNodeData = m_nodeGraphModel.GetDataFromNodeID(outputdata.inputNodeID); inputNodeData.branchingIndex = 1; } outputdata = m_nodeGraphModel.GetOutputPlugToNode(node.m_id, 1); if (outputdata != null) { DialogueData inputNodeData = m_nodeGraphModel.GetDataFromNodeID(outputdata.inputNodeID); inputNodeData.branchingIndex = 0; } EndArea(); }
public OutputPlugToNode GetOutputPlugToNode(int node_id, int plug_index) { OutputPlugToNode result = new OutputPlugToNode(); Node node = GetNodeFromID(node_id); Plug outPlug = node.GetOutputPlugAtIndex(plug_index); foreach (KeyValuePair <int, Connection> connection_pair in GetConnections()) { Connection connection = connection_pair.Value; if (connection.m_outputNodeId == node_id && connection.m_outputPlugId == outPlug.m_plugId) { // adding branching indices result.inputNodeID = connection.m_inputNodeId; result.outputNodeID = connection.m_outputNodeId; result.outputPlugID = connection.m_outputPlugId; return(result); } } return(null); }
private void DrawStartNode(Node node, GUIStyle style) { if (node.isConditionalNode) { Rect nodeRect = new Rect(node.m_position.x, node.m_position.y, node.m_dimension.x - 50, node.m_dimension.y); // draw plugs on specific node Plug trueOutput = node.GetOutputPlugAtIndex(0); Plug falseOutput = node.GetOutputPlugAtIndex(1); DrawConditionalOutPlug(trueOutput, nodeRect, m_outputTruePlugStyle, 1, node.m_outputPlugs.Count); DrawConditionalOutPlug(falseOutput, nodeRect, m_outputFalsePlugStyle, 2, node.m_outputPlugs.Count); // drawing the node itself with the contents in it GUI.Box(nodeRect, "", style); float padding = 7f; Rect nodeContentRect = new Rect(node.m_position.x + padding, node.m_position.y + padding, node.m_dimension.x - (2 * padding), node.m_dimension.y - (2 * padding)); BeginArea(nodeContentRect); DialogueData data = m_nodeGraphModel.GetDataFromNodeID(node.m_id); if (data != null) { var rightAlign = new GUIStyle(GUI.skin.label) { alignment = TextAnchor.UpperRight }; Label("Conditional Start", EditorStyles.boldLabel); Label("True", rightAlign); Label(""); Label("False", rightAlign); } OutputPlugToNode outputdata = m_nodeGraphModel.GetOutputPlugToNode(node.m_id, 0); if (outputdata != null) { DialogueData inputNodeData = m_nodeGraphModel.GetDataFromNodeID(outputdata.inputNodeID); inputNodeData.branchingIndex = 1; } outputdata = m_nodeGraphModel.GetOutputPlugToNode(node.m_id, 1); if (outputdata != null) { DialogueData inputNodeData = m_nodeGraphModel.GetDataFromNodeID(outputdata.inputNodeID); inputNodeData.branchingIndex = 0; } } else { Rect nodeRect = new Rect(node.m_position.x, node.m_position.y, node.m_dimension.x - 50, node.m_dimension.y); // draw plugs on specific node int plug_count = 1; foreach (KeyValuePair <int, Plug> output_plug in node.m_outputPlugs) { DrawPlug(output_plug.Value, nodeRect, m_outputPlugStyle, plug_count, node.m_outputPlugs.Count); ++plug_count; } // drawing the node itself with the contents in it GUI.Box(nodeRect, "", style); float padding = 7f; Rect nodeContentRect = new Rect(node.m_position.x + padding, node.m_position.y + padding, node.m_dimension.x - (2 * padding), node.m_dimension.y - (2 * padding)); BeginArea(nodeContentRect); List <string> errors = m_nodeGraphModel.GetErrorMesssages(node.m_id); Label("Start Node", EditorStyles.boldLabel); if (errors.Count > 0) { GUIStyle error_label = new GUIStyle(); error_label.fontStyle = FontStyle.Bold; error_label.normal.textColor = new Color(171f / 255f, 19f / 255f, 0); Label("Errors!!", error_label); } EndArea(); } }