コード例 #1
0
    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();
    }
コード例 #2
0
    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);
            }
        }
    }
コード例 #3
0
    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
    }