public void SetConstellation(ConstellationScriptData constellationScriptData) { ConstellationData = ScriptableObject.CreateInstance <ConstellationScript>(); ConstellationData.script = constellationScriptData; ConstellationData.IsInstance = true; Initialize(); this.enabled = true; }
public void UpdateGenericNodeByLinkGUID(ConstellationScriptData constellationScript, NodesFactory nodesFactory, string guid, IConstellationFileParser constellationParser) { var linkedinputID = 0; var linkedOutputID = 0; var connectedNodes = constellationScript.GetNodesWithLinkGUID(guid, out linkedinputID, out linkedOutputID); var outputNode = connectedNodes[0]; var inputNode = connectedNodes[1]; var inputNodeType = nodesFactory.GetNode(inputNode, constellationParser).NodeType; var outputNodeType = nodesFactory.GetNode(outputNode, constellationParser).NodeType; var inputGenericNodeScript = inputNodeType as IGenericNode; var mirrorInputNodeScript = inputNodeType as IMirrorNode; var mirrorOutputNodeScript = outputNodeType as IMirrorNode; if (mirrorInputNodeScript != null) { for (var k = 0; k < inputNode.GetInputs().Length; k++) { inputNode.Inputs[k].Type = outputNode.Outputs[linkedOutputID].Type; } } else if (mirrorOutputNodeScript != null) { for (var k = 0; k < outputNode.GetOutputs().Length; k++) { outputNode.Outputs[k].Type = inputNode.Inputs[linkedinputID].Type; } } else { if (inputGenericNodeScript != null && inputGenericNodeScript.IsGenericInput(linkedinputID)) { var inputsID = linkedinputID; for (var k = 0; k < inputNode.GetInputs().Length; k++) { if (k == linkedinputID) { inputNode.Inputs[k].Type = outputNode.Outputs[linkedOutputID].Type; break; } } if (inputGenericNodeScript.IsGenericInput(linkedinputID)) { var outputID = inputGenericNodeScript.GetGenericOutputByLinkedInput(linkedinputID); for (var k = 0; k < inputNode.GetOutputs().Length; k++) { for (var l = 0; l < outputID.Length; l++) { if (k == outputID[l]) { inputNode.Outputs[k].Type = outputNode.Outputs[linkedOutputID].Type; } } } } } } }
public void RemoveNode(NodeData _node) { if (script == null) { script = new ConstellationScriptData(); } script.Nodes.Remove(_node); }
public void AddAction(ConstellationScriptData script) { if (SelectedAction != Actions.Count - 1) { ClearActions(); } Actions.Add(new ConstellationScriptData().Set(script)); SelectedAction = Actions.Count - 1; }
public bool IsLinkValid(LinkData _link, ConstellationScriptData _constellationScriptData) { foreach (LinkData link in _constellationScriptData.Links) { if (_link.Input.Guid == link.Input.Guid && _link.Output.Guid == link.Output.Guid) { return(false); } } return(true); }
public void AddLink(LinkData _link) { if (script == null) { script = new ConstellationScriptData(); } if (script.Links == null) { script.Links = new List <LinkData> (); } script.Links.Add(_link); }
public LinkData[] GetLinks() { if (script == null) { script = new ConstellationScriptData(); } if (script.Links == null) { script.Links = new List <LinkData> (); } return(script.Links.ToArray()); }
public NodeData[] GetNodes() { if (script == null) { script = new ConstellationScriptData(); } if (script.Nodes == null) { script.Nodes = new List <NodeData> (); } return(script.Nodes.ToArray()); }
public void RemoveNode(Node <INode> _node) { if (script == null) { script = new ConstellationScriptData(); } foreach (NodeData node in script.Nodes) { if (_node.GetGuid() == node.Guid) { script.Nodes.Remove(node); return; } } }
public NodeData GetNodeByGUID(string guid) { if (script == null) { script = new ConstellationScriptData(); } foreach (NodeData node in script.Nodes) { if (guid == node.Guid) { return(node); } } return(null); }
public LinkData AddLink(Link _link) { if (script == null) { script = new ConstellationScriptData(); } if (script.Links == null) { script.Links = new List <LinkData> (); } var newLink = new LinkData(_link); script.Links.Add(newLink); return(newLink); }
public NodeData NodeAdded(NodeData nodeData, Node <INode> newNode, ConstellationScriptData constellationScript) { var genericNode = newNode.NodeType as IGenericNode; if (genericNode as IGenericNode != null) { for (var i = 0; i < newNode.Inputs.Count; i++) { var genericOutputsID = genericNode.GetGenericOutputByLinkedInput(i); for (var j = 0; j < genericOutputsID.Length; j++) { nodeData.Outputs[genericOutputsID[j]].Type = ConstellationEditorRules.UNDEFINED; } } } return(nodeData); }
public NodeData AddNode(NodeData _node) { if (script == null) { script = new ConstellationScriptData(); } if (script.Nodes == null) { script.Nodes = new List <NodeData> (); } var newNode = new NodeData(_node); newNode.XPosition = _node.XPosition; newNode.YPosition = _node.YPosition; script.Nodes.Add(newNode); return(newNode); }
public NodeData[] GetAllEntryNodes() { if (script == null) { script = new ConstellationScriptData(); } var entry = new List <NodeData>(); foreach (var node in script.Nodes) { if (node.Name == "Entry") { entry.Add(node); } } return(entry.ToArray()); }
public static bool CreateLink(InputData _input, OutputData _output, ConstellationScriptData constellationScript, LinkValid linkIsValid, LinkAdded linkCreated) { if (_output != null && _output.Type == UNDEFINED && _input != null && _input.Type != UNDEFINED) { return(false); } //if () if (IsTypeValid(_input, _output)) { var newLink = new LinkData(_input, _output); if (TypeConst.IsLinkValid(newLink, constellationScript)) { linkIsValid(); constellationScript.AddLink(newLink); linkCreated(newLink.GUID); return(true); } } return(false); }
public ConstellationScript Set(ConstellationScriptData _script) { script.Nodes = new List <NodeData>(); script.Links = new List <LinkData>(); if (_script.Nodes != null) { foreach (var node in _script.Nodes) { AddNode(node); } } if (_script.Links != null) { foreach (var link in _script.Links) { AddLink(link); } } script.Name = _script.Name; return(this); }
public void UpdateNode(ConstellationScriptData constellation, IConstellationFileParser constellationFileParser) { nameParameter.Value = new Ray().Set(constellation.Name); constellationNodeData.Value = new Ray().Set(constellationFileParser.ParseConstellationScript(constellation)); }
public bool CanRemoveNode(NodeData node, ConstellationScriptData constellationScript) { return(true); }
public void InitializeData(ConstellationScriptData constellationScriptData) { script = constellationScriptData; Set(script); }
public void UpdateNode(ConstellationScriptData constellation) { nameParameter.Value = new Ray().Set(constellation.Name); constellationNodeData.Value = new Ray().Set(UnityEngine.JsonUtility.ToJson(constellation)); }
public string ParseConstellationScript(ConstellationScriptData Data) { return(JsonUtility.ToJson(Data)); }
public void UpdateScriptNodes(ConstellationScriptData script, ConstellationScriptData[] constellationScripts) { List <NodeData> nodesToRemove = new List <NodeData>(); NodesFactory = new NodesFactory(constellationScripts); foreach (var node in script.Nodes) { var nodeObject = NodesFactory.GetNodeSafeMode(node); if (nodeObject == null) { nodesToRemove.Add(node); } else if (node.Inputs.Count != nodeObject.Inputs.Count || node.Outputs.Count != nodeObject.Outputs.Count || node.GetParameters().Length != nodeObject.GetParameters().Length) { nodesToRemove.Add(node); } else { var foundDifference = false; var i = 0; foreach (var input in node.GetInputs()) { if ((input.Type != nodeObject.Inputs[i].Type && nodeObject.Inputs[i].Type != "Any") || input.IsBright != nodeObject.Inputs[i].isBright) { nodesToRemove.Add(node); foundDifference = true; break; } i++; } if (!foundDifference) { i = 0; foreach (var output in node.GetOutputs()) { if ((output.Type != nodeObject.Outputs[i].Type && nodeObject.Outputs[i].Type != "Any") || output.IsBright != nodeObject.Outputs[i].IsWarm) { nodesToRemove.Add(node); break; } i++; } } if (!foundDifference) { i = 0; if (node.GetParameters().Length != nodeObject.GetParameters().Length) { nodesToRemove.Add(node); } foreach (var parameter in node.GetParameters()) { if (parameter.Type != nodeObject.GetParameters()[i].Type) { nodesToRemove.Add(node); break; } i++; } } } } foreach (var node in nodesToRemove) { script.RemoveNode(node.Guid); var replacementNode = NodesFactory.GetNode(node.Name, node.Namespace); if (replacementNode != null) { replacementNode.XPosition = node.XPosition; replacementNode.YPosition = node.YPosition; replacementNode.XSize = node.SizeX; replacementNode.YSize = node.SizeY; if (node.Inputs != null && replacementNode.Inputs != null) { if (node.Inputs.Count >= replacementNode.Inputs.Count) { for (var i = 0; i < replacementNode.Inputs.Count; i++) { replacementNode.Inputs[i].Guid = node.Inputs[i].Guid; } } else { for (var i = 0; i < node.Inputs.Count; i++) { replacementNode.Inputs[i].Guid = node.Inputs[i].Guid; } } } if (node.Outputs != null && replacementNode.Outputs != null) { if (node.Outputs.Count >= replacementNode.Outputs.Count) { for (var i = 0; i < replacementNode.Outputs.Count; i++) { replacementNode.Outputs[i].Guid = node.Outputs[i].Guid; } } else { for (var i = 0; i < node.Outputs.Count; i++) { replacementNode.Outputs[i].Guid = node.Outputs[i].Guid; } } } script.AddNode(new NodeData(replacementNode)); } else { script.RemoveNode(node.Guid); } } foreach (var link in script.Links) { //if() } }
public void InitializeData() { script = new ConstellationScriptData(); Set(script); }
public void UpdateScriptNodes(ConstellationScriptData script) { List <NodeData> nodesToRemove = new List <NodeData>(); NodesFactory = new NodesFactory(); try { foreach (var node in script.Nodes) { if (NodesFactory.GetNodeSafeMode(node) == null) { nodesToRemove.Add(node); } else if (node.Inputs.Count != NodesFactory.GetNode(node).Inputs.Count || node.Outputs.Count != NodesFactory.GetNode(node).Outputs.Count) { nodesToRemove.Add(node); } } foreach (var node in nodesToRemove) { script.RemoveNode(node.Guid); var replacementNode = NodesFactory.GetNode(node.Name, node.Namespace); if (replacementNode != null) { replacementNode.XPosition = node.XPosition; replacementNode.YPosition = node.YPosition; if (node.Inputs.Count >= replacementNode.Inputs.Count) { for (var i = 0; i < replacementNode.Inputs.Count; i++) { replacementNode.Inputs[i].Guid = node.Inputs[i].Guid; } } else { for (var i = 0; i < node.Inputs.Count; i++) { replacementNode.Inputs[i].Guid = node.Inputs[i].Guid; } } if (node.Outputs.Count >= replacementNode.Outputs.Count) { for (var i = 0; i < replacementNode.Outputs.Count; i++) { replacementNode.Outputs[i].Guid = node.Outputs[i].Guid; } } else { for (var i = 0; i < node.Outputs.Count; i++) { replacementNode.Outputs[i].Guid = node.Outputs[i].Guid; } } script.AddNode(new NodeData(replacementNode)); } else { script.RemoveNode(node.Guid); } } } catch (Exception e) { Debug.LogError(e); } }
public void RemoveNode(NodeData node, ConstellationScriptData constellationScript) { constellationScript.RemoveNode(node.Guid); }
public void UpdateScriptNodes(ConstellationScriptData script, ConstellationScriptData[] constellationScripts) { List <NodeData> nodesToRemove = new List <NodeData>(); NodesFactory = new NodesFactory(constellationScripts); foreach (var node in script.Nodes) { var nodeObject = NodesFactory.GetNodeSafeMode(node); if (nodeObject == null) { nodesToRemove.Add(node); } else if (node.Inputs.Count != nodeObject.Inputs.Count || node.Outputs.Count != nodeObject.Outputs.Count || node.GetParameters().Length != nodeObject.GetParameters().Length) { nodesToRemove.Add(node); } else if (node.Namespace == Constellation.ConstellationNodes.NameSpace.NAME) // to be done only when the node is edited { nodesToRemove.Add(node); } else { var foundDifference = false; var i = 0; foreach (var input in node.GetInputs()) { if ((input.Type != nodeObject.Inputs[i].Type && nodeObject.Inputs[i].Type != ConstellationEditorRules.ANY && nodeObject.Inputs[i].Type != ConstellationEditorRules.GENERIC && nodeObject.Inputs[i].Type != ConstellationEditorRules.UNDEFINED) || input.IsBright != nodeObject.Inputs[i].isBright || input.Description != nodeObject.Inputs[i].Description) { nodesToRemove.Add(node); foundDifference = true; break; } i++; } if (!foundDifference) { i = 0; foreach (var output in node.GetOutputs()) { if ((output.Type != nodeObject.Outputs[i].Type && nodeObject.Outputs[i].Type != ConstellationEditorRules.ANY && nodeObject.Outputs[i].Type != ConstellationEditorRules.GENERIC && nodeObject.Outputs[i].Type != ConstellationEditorRules.UNDEFINED) || output.IsBright != nodeObject.Outputs[i].IsWarm || output.Description != nodeObject.Outputs[i].Description) { nodesToRemove.Add(node); break; } i++; } } if (!foundDifference) { i = 0; if (node.GetParameters().Length != nodeObject.GetParameters().Length) { nodesToRemove.Add(node); } foreach (var parameter in node.GetParameters()) { if (parameter.Type != nodeObject.GetParameters()[i].Type) { nodesToRemove.Add(node); break; } i++; } } } } foreach (var node in nodesToRemove) { script.RemoveNode(node.Guid); var replacementNode = NodesFactory.GetNode(node.Name, node.Namespace, null); if (replacementNode != null) { replacementNode.XPosition = node.XPosition; replacementNode.YPosition = node.YPosition; replacementNode.XSize = node.SizeX; replacementNode.YSize = node.SizeY; if (node.ParametersData != null && replacementNode.NodeParameters != null) { if (node.ParametersData.Count == replacementNode.NodeParameters.Count) { for (var i = 0; i < replacementNode.NodeParameters.Count; i++) { replacementNode.NodeParameters[i].Value = new Ray(node.ParametersData[i].Value); } } } if (node.Inputs != null && replacementNode.Inputs != null) { if (node.Inputs.Count >= replacementNode.Inputs.Count) { for (var i = 0; i < replacementNode.Inputs.Count; i++) { replacementNode.Inputs[i].Guid = node.Inputs[i].Guid; } } else { for (var i = 0; i < node.Inputs.Count; i++) { replacementNode.Inputs[i].Guid = node.Inputs[i].Guid; } } } if (node.Outputs != null && replacementNode.Outputs != null) { if (node.Outputs.Count >= replacementNode.Outputs.Count) { for (var i = 0; i < replacementNode.Outputs.Count; i++) { replacementNode.Outputs[i].Guid = node.Outputs[i].Guid; } } else { for (var i = 0; i < node.Outputs.Count; i++) { replacementNode.Outputs[i].Guid = node.Outputs[i].Guid; } } } script.AddNode(new NodeData(replacementNode)); } else { script.RemoveNode(node.Guid); } } foreach (var link in script.Links) { //if() } }
public void UpdateScriptNodes(ConstellationScriptData script, ConstellationScriptData [] constellationScripts) { List <NodeData> nodesToRemove = new List <NodeData>(); NodesFactory = new NodesFactory(constellationScripts); var nodeId = 0; foreach (var node in script.Nodes) { if (NodesFactory.GetNodeSafeMode(node) == null) { nodesToRemove.Add(node); } else if (node.Inputs.Count != NodesFactory.GetNode(node).Inputs.Count || node.Outputs.Count != NodesFactory.GetNode(node).Outputs.Count) { nodesToRemove.Add(node); } nodeId++; } foreach (var node in nodesToRemove) { //try { script.RemoveNode(node.Guid); var replacementNode = NodesFactory.GetNode(node.Name, node.Namespace); if (replacementNode != null) { replacementNode.XPosition = node.XPosition; replacementNode.YPosition = node.YPosition; replacementNode.XSize = node.SizeX; replacementNode.YSize = node.SizeY; if (node.Inputs != null && replacementNode.Inputs != null) { if (node.Inputs.Count >= replacementNode.Inputs.Count) { for (var i = 0; i < replacementNode.Inputs.Count; i++) { replacementNode.Inputs[i].Guid = node.Inputs[i].Guid; } } else { for (var i = 0; i < node.Inputs.Count; i++) { replacementNode.Inputs[i].Guid = node.Inputs[i].Guid; } } } if (node.Outputs != null && replacementNode.Outputs != null) { if (node.Outputs.Count >= replacementNode.Outputs.Count) { for (var i = 0; i < replacementNode.Outputs.Count; i++) { replacementNode.Outputs[i].Guid = node.Outputs[i].Guid; } } else { for (var i = 0; i < node.Outputs.Count; i++) { replacementNode.Outputs[i].Guid = node.Outputs[i].Guid; } } } script.AddNode(new NodeData(replacementNode)); } else { script.RemoveNode(node.Guid); } /*} * catch (Exception e) * { * Debug.LogError(e + e.StackTrace); * }*/ } }
public static NodeData AddNode(NodesFactory nodesFactory, string nodeName, string nodeNamespace, ConstellationScriptData constellationScript) { var newNode = nodesFactory.GetNode(nodeName, nodeNamespace); var nodeData = new NodeData(newNode); var genericNode = newNode.NodeType as IGenericNode; if (genericNode as IGenericNode != null) { for (var i = 0; i < newNode.Inputs.Count; i++) { var genericOutputsID = genericNode.GetGenericOutputByLinkedInput(i); for (var j = 0; j < genericOutputsID.Length; j++) { nodeData.Outputs[genericOutputsID[j]].Type = UNDEFINED; } } } nodeData = constellationScript.AddNode(nodeData); nodeData.XPosition = 0; nodeData.YPosition = 0; return(nodeData); }