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