Пример #1
0
        private IEnumerator OnCreateNodeDelayCall(ScriptGraphNode node)
        {
            yield return(0);

            // 1フレーム遅らせる
            _window.scriptGraphAsset.AddNode(ScriptNodeSerializer.Serialize(node));

            yield return(null);
        }
        public static ScriptGraphNode Deserialze(ScriptNodeData data)
        {
            ScriptGraphNode node = CreateNode(data);

            if (node == null)
            {
                Debug.LogError("node is null. type = " + data.type.ToString());
                return(null);
            }

            return(node);
        }
Пример #3
0
        private void Load(ScriptGraphAsset asset)
        {
            var tempNodeList = new List <ScriptGraphNode>(asset.list.Count);

            foreach (var data in asset.list)
            {
                ScriptGraphNode node = ScriptNodeDeserializer.Deserialze(data);
                node.onNodeContentChanged = OnNodeContentChanged;
                this.AddElement(node);
                tempNodeList.Add(node);
            }

            foreach (ScriptGraphNode nodeLeft in tempNodeList)
            {
                int portIndex = 0;

                for (int i = 0; i < nodeLeft.outIds.Count; ++i)
                {
                    int outputId = nodeLeft.outIds[i];

                    if (outputId <= 0)
                    {
                        portIndex++;
                        continue;
                    }

                    foreach (ScriptGraphNode nodeRight in tempNodeList)
                    {
                        if (outputId == nodeRight.id)
                        {
                            Edge edge = new Edge()
                            {
                                output = nodeLeft.outputPorts[portIndex++],
                                input  = nodeRight.inputPort
                            };

                            edge.output.Connect(edge);
                            edge.input.Connect(edge);

                            AddElement(edge);
                        }
                    }
                }
            }
        }
        public static ScriptNodeData Serialize(ScriptGraphNode node)
        {
            ScriptNodeData data = new ScriptNodeData();

            data.id     = node.id;
            data.type   = node.Type;
            data.outIds = node.outIds.ToArray();
            data.rect   = node.GetPosition();

            ByteArrayStream stream = new ByteArrayStream();

            switch (node.Type)
            {
            case NodeType.Root:
                break;

            case NodeType.Message:
                Serialize(node as MessageNode, ref stream);
                break;

            case NodeType.Branch:
                Serialize(node as BranchNode, ref stream);
                break;

            case NodeType.None:
            default:
            {
                Debug.LogError("Invalid Node Type :" + node.Type.ToString());
            }
            break;
            }

            data.serialData = stream.GetBuffer();

            return(data);
        }
Пример #5
0
 private void OnNodeContentChanged(ScriptGraphNode node)
 {
     _window.scriptGraphAsset.UpdateNode(ScriptNodeSerializer.Serialize(node));
 }
Пример #6
0
 private void OnCreatedNode(ScriptGraphNode node)
 {
     EditorCoroutineUtility.StartCoroutine(OnCreateNodeDelayCall(node), this);
 }
 private static void SetCommonData(ScriptGraphNode node, ScriptNodeData data)
 {
     node.id = data.id;
     node.outIds.AddRange(data.outIds);
     node.SetPosition(data.rect);
 }