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); }