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(); }
private void SelectNodesInBox() { float x = Mathf.Min(m_multiSelectStartPos.x, m_multiSelectEndPos.x); float y = Mathf.Min(m_multiSelectStartPos.y, m_multiSelectEndPos.y); Rect multiselect_rect = new Rect(x, y, Mathf.Abs(m_multiSelectStartPos.x - m_multiSelectEndPos.x), Mathf.Abs(m_multiSelectStartPos.y - m_multiSelectEndPos.y)); foreach (KeyValuePair <int, Node> node_pair in m_nodeGraphModel.GetNodes()) { Node node = node_pair.Value; Vector2 node_position = node.m_position; Vector2 node_dimensions = node.m_dimension; if (multiselect_rect.Contains(node.m_position)) { m_nodeIDsSelected.Add(node.m_id); } } }
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 }