示例#1
0
        public ScriptGatewayNodeData(INodeGraph graph, GatewaySerializedNode serializedData) : base(graph)
        {
            serializedNode = serializedData;
            GUID           = serializedData.GUID;
            connections    = serializedData.data.connections;
            nodeStyle      = new GraphEntityStyle();
            nodeStyle.Init(new Vector2(250, 50), Color.cyan, Color.blue, Color.blue, Color.white);

            windowRect = new Rect(serializedData.position, nodeStyle.size);
        }
示例#2
0
        public ScenimaticScript(string sceneName, ScenimaticSerializedNode firstBranch)
        {
            this.sceneName = sceneName;
            inputNode      = new GatewaySerializedNode()
            {
                GUID     = System.Guid.NewGuid().ToString(),
                position = Vector2.zero,
                data     = new Gateway()
                {
                    gatewayType = GatewayType.Entrance,
                    connections = new List <Connection>()
                    {
                        new Connection()
                        {
                            GUID         = System.Guid.NewGuid().ToString(),
                            type         = ConnectionType.ControlFlow,
                            variableName = Connection.ControlFlowOutName,
                        }
                    },
                },
            };
            outputNode = new GatewaySerializedNode()
            {
                GUID     = System.Guid.NewGuid().ToString(),
                position = new Vector2(800, 0),
                data     = new Gateway()
                {
                    gatewayType = GatewayType.Exit,

                    connections = new List <Connection>()
                    {
                        new Connection()
                        {
                            GUID         = System.Guid.NewGuid().ToString(),
                            type         = ConnectionType.ControlFlow,
                            variableName = Connection.ControlFlowInName,
                        }
                    },
                },
            };

            branches = new List <ScenimaticSerializedNode>();
            branches.Add(firstBranch);

            inputNode.data.connections[0].connectedToGUIDs.Add(firstBranch.data.GetMainControlFlowInputGUID());
            firstBranch.data.connectionInputs[0].connectedToGUIDs.Add(inputNode.data.connections[0].GUID);
            firstBranch.data.connectionOutputs[0].connectedToGUIDs.Add(outputNode.data.connections[0].GUID);
            outputNode.data.connections[0].connectedToGUIDs.Add(firstBranch.data.GetMainControlFlowOutputGUID());
        }
示例#3
0
        public void LoadScenimatic(string path)
        {
            ClearPanels();
            currentBranch = null;
            eventPath     = path;
            StreamReader reader     = new StreamReader(eventPath);
            string       fileString = reader.ReadToEnd();

            reader.Close();

            ScenimaticScript script = JsonUtility.FromJson <ScenimaticScript>(fileString);

            scriptStart = script.inputNode;
            scriptEnd   = script.outputNode;
            // this is not ideal. It will force users to have their sprite atlas in a resource folder.
            dialogPanel.spriteAtlas = Resources.Load <SpriteAtlas>(script.spriteAtlas);

            guidBranches          = new Dictionary <string, ISerializedEntity>();
            guidConnectionOutputs = new Dictionary <string, Connection>();
            guidConnectionInputs  = new Dictionary <string, Connection>();

            foreach (var branch in script.branches)
            {
                guidBranches.Add(branch.data.GetMainControlFlowInputGUID(), branch);
                foreach (var conn in branch.data.connectionOutputs)
                {
                    guidConnectionOutputs.Add(conn.GUID, conn);
                }
                foreach (var conn in branch.data.connectionInputs)
                {
                    guidConnectionInputs.Add(conn.GUID, conn);
                }
            }

            guidBranches.Add(scriptEnd.data.connections[0].GUID, scriptEnd);

            foreach (var conn in scriptStart.data.connections)
            {
                guidConnectionOutputs.Add(conn.GUID, conn);
            }
            foreach (var conn in scriptEnd.data.connections)
            {
                guidConnectionInputs.Add(conn.GUID, conn);
            }
        }