private void DrawConnections() { if (m_nodeGraphModel.GetConnections().Count != 0) { Connection connection_selected = null; foreach (KeyValuePair <int, Connection> connection_pair in m_nodeGraphModel.GetConnections()) { Connection connection = connection_pair.Value; Plug input_plug = m_nodeGraphModel.GetNodeFromID(connection.m_inputNodeId).m_inputPlug; Plug output_plug; m_nodeGraphModel.GetNodeFromID(connection.m_outputNodeId).m_outputPlugs.TryGetValue(connection.m_outputPlugId, out output_plug); Handles.DrawBezier(input_plug.m_position, output_plug.m_position, input_plug.m_position + Vector2.left * 50f, output_plug.m_position - Vector2.left * 50f, Color.white, null, 2f); if (Handles.Button((input_plug.m_position + output_plug.m_position) * 0.5f, Quaternion.identity, 4, 8, Handles.SphereHandleCap)) { connection_selected = connection; } } if (connection_selected != null) // clicking on the selection will delete it { OnClickRemoveConnection(connection_selected); } } }
public void SaveAsset(NodeGraphModel model_data) { if (m_dialogueAsset.SceneName != SceneManager.GetActiveScene().name) { return; } m_dialogueAsset.m_assetData = ""; // save connections m_dialogueAsset.m_assetData += model_data.GetConnections().Count + "`"; foreach (KeyValuePair <int, Connection> connection_pair in model_data.GetConnections()) { Connection connection = connection_pair.Value; m_dialogueAsset.m_assetData += connection.m_id + "`"; m_dialogueAsset.m_assetData += connection.m_inputNodeId + "`"; m_dialogueAsset.m_assetData += connection.m_outputNodeId + "`"; m_dialogueAsset.m_assetData += connection.m_inputPlugId + "`"; m_dialogueAsset.m_assetData += connection.m_outputPlugId + "`"; } // save nodes m_dialogueAsset.m_assetData += model_data.GetNodes().Count + "`"; foreach (KeyValuePair <int, Node> node_pair in model_data.GetNodes()) { Node node = node_pair.Value; m_dialogueAsset.m_assetData += node.m_id + "`"; m_dialogueAsset.m_assetData += node.m_position.x + "`" + node.m_position.y + "`"; m_dialogueAsset.m_assetData += node.m_dimension.x + "`" + node.m_dimension.y + "`"; m_dialogueAsset.m_assetData += node.isConditionalNode + "`"; SavePlugData(node.m_inputPlug); m_dialogueAsset.m_assetData += node.m_outputPlugs.Count + "`"; foreach (KeyValuePair <int, Plug> plug_pair in node.m_outputPlugs) { Plug plug = plug_pair.Value; SavePlugData(plug); } } //clear current node assets in dialogue asset // save dialogue data ClearAsset(); PopulateDialogueList(model_data); SaveBuiltDialogueData(model_data); // only set it to current scene if there is no scene set in the past if (m_dialogueAsset.SceneName == null) { m_dialogueAsset.SceneName = SceneManager.GetActiveScene().name; } EditorUtility.SetDirty(m_dialogueAsset); // tells unity to data in this asset has changed and needs to saved if user asks AssetDatabase.SaveAssets(); }
public void SaveAsset(NodeGraphModel model_data) { m_dialogueAsset.m_assetData = ""; // save connections m_dialogueAsset.m_assetData += model_data.GetConnections().Count + "`"; foreach (KeyValuePair <int, Connection> connection_pair in model_data.GetConnections()) { Connection connection = connection_pair.Value; m_dialogueAsset.m_assetData += connection.m_id + "`"; m_dialogueAsset.m_assetData += connection.m_inputNodeId + "`"; m_dialogueAsset.m_assetData += connection.m_outputNodeId + "`"; m_dialogueAsset.m_assetData += connection.m_inputPlugId + "`"; m_dialogueAsset.m_assetData += connection.m_outputPlugId + "`"; } // save nodes m_dialogueAsset.m_assetData += model_data.GetNodes().Count + "`"; foreach (KeyValuePair <int, Node> node_pair in model_data.GetNodes()) { Node node = node_pair.Value; m_dialogueAsset.m_assetData += node.m_id + "`"; m_dialogueAsset.m_assetData += node.m_position.x + "`" + node.m_position.y + "`"; m_dialogueAsset.m_assetData += node.m_dimension.x + "`" + node.m_dimension.y + "`"; SavePlugData(node.m_inputPlug); m_dialogueAsset.m_assetData += node.m_outputPlugs.Count + "`"; foreach (KeyValuePair <int, Plug> plug_pair in node.m_outputPlugs) { Plug plug = plug_pair.Value; SavePlugData(plug); } } // save dialogue data SaveEditorDialogueData(model_data); SaveRuntimeDialogueData(model_data); EditorUtility.SetDirty(m_dialogueAsset); // tells unity to data in this asset has changed and needs to saved if user asks }
private void PopulateDialogueList(NodeGraphModel model_data) { m_dialogueAsset.m_dialogueData = new Dictionary <int, DialogueData>(); foreach (KeyValuePair <int, DialogueData> dialogue_pair in model_data.GetDialogueData()) { List <NextDialogueDataContent> nextData = new List <NextDialogueDataContent>(); DialogueData dialogue = dialogue_pair.Value; // populating next branch ids dialogue.m_isBranching = model_data.GetNodeFromID(dialogue.node_id).m_outputPlugs.Count > 1; dialogue.m_nextDialogueData = new List <int>(); foreach (KeyValuePair <int, Connection> connection_pair in model_data.GetConnections()) { Connection connection = connection_pair.Value; if (connection.m_outputNodeId == dialogue.node_id) { // adding branching indices DialogueData next_data = model_data.GetDataFromNodeID(connection.m_inputNodeId); NextDialogueDataContent nextDataContent = new NextDialogueDataContent(); if (next_data.branchingIndex == -1) { Plug outputplug_index = model_data.GetNodeFromID(connection.m_outputNodeId).m_outputPlugs[connection.m_outputPlugId]; Debug.Log(outputplug_index.m_plugIndex); next_data.branchingIndex = outputplug_index.m_plugIndex; } nextDataContent.branchingIndex = next_data.branchingIndex; nextDataContent.nextNodeIndex = connection.m_inputNodeId; nextData.Add(nextDataContent); } } nextData.Sort(delegate(NextDialogueDataContent c1, NextDialogueDataContent c2) { return(c1.branchingIndex.CompareTo(c2.branchingIndex)); }); foreach (NextDialogueDataContent next_data in nextData) { dialogue.m_nextDialogueData.Add(next_data.nextNodeIndex); } // sort the next dialogue data by index; m_dialogueAsset.m_dialogueData.Add(dialogue.node_id, dialogue); } }
private void PopulateDialogueList(NodeGraphModel model_data) { m_dialogueAsset.m_dialogueData = new Dictionary <int, DialogueData>(); foreach (KeyValuePair <int, DialogueData> dialogue_pair in model_data.GetDialogueData()) { DialogueData dialogue = dialogue_pair.Value; // populating next branch ids dialogue.m_isBranching = model_data.GetNodeFromID(dialogue.node_id).m_outputPlugs.Count > 1; dialogue.m_nextDialogueData = new List <int>(); foreach (KeyValuePair <int, Connection> connection_pair in model_data.GetConnections()) { Connection connection = connection_pair.Value; if (connection.m_outputNodeId == dialogue.node_id) { dialogue.m_nextDialogueData.Add(connection.m_inputNodeId); } } m_dialogueAsset.m_dialogueData.Add(dialogue.node_id, dialogue); } }
public List <int> GetNextDialogueData(DialogueData data, NodeGraphModel model_data) { List <NextDialogueDataContent> nextData = new List <NextDialogueDataContent>(); DialogueData dialogue = data; // populating next branch ids dialogue.m_nextDialogueData = new List <int>(); foreach (KeyValuePair <int, Connection> connection_pair in model_data.GetConnections()) { Connection connection = connection_pair.Value; if (connection.m_outputNodeId == dialogue.node_id) { // adding branching indices DialogueData next_data = model_data.GetDataFromNodeID(connection.m_inputNodeId); NextDialogueDataContent nextDataContent = new NextDialogueDataContent(); if (next_data.branchingIndex == -1) { Plug outputplug_index = model_data.GetNodeFromID(connection.m_outputNodeId).m_outputPlugs[connection.m_outputPlugId]; Debug.Log(outputplug_index.m_plugIndex); next_data.branchingIndex = outputplug_index.m_plugIndex; } nextDataContent.branchingIndex = next_data.branchingIndex; nextDataContent.nextNodeIndex = connection.m_inputNodeId; nextData.Add(nextDataContent); } } nextData.Sort(delegate(NextDialogueDataContent c1, NextDialogueDataContent c2) { return(c1.branchingIndex.CompareTo(c2.branchingIndex)); }); foreach (NextDialogueDataContent next_data in nextData) { dialogue.m_nextDialogueData.Add(next_data.nextNodeIndex); } return(dialogue.m_nextDialogueData); }