public void SetConstellation(ConstellationScriptData constellationScriptData)
 {
     ConstellationData            = ScriptableObject.CreateInstance <ConstellationScript>();
     ConstellationData.script     = constellationScriptData;
     ConstellationData.IsInstance = true;
     Initialize();
     this.enabled = true;
 }
Example #2
0
        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;
                                }
                            }
                        }
                    }
                }
            }
        }
Example #3
0
        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;
        }
Example #5
0
 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);
 }
Example #6
0
        public void AddLink(LinkData _link)
        {
            if (script == null)
            {
                script = new ConstellationScriptData();
            }

            if (script.Links == null)
            {
                script.Links = new List <LinkData> ();
            }
            script.Links.Add(_link);
        }
Example #7
0
        public LinkData[] GetLinks()
        {
            if (script == null)
            {
                script = new ConstellationScriptData();
            }

            if (script.Links == null)
            {
                script.Links = new List <LinkData> ();
            }

            return(script.Links.ToArray());
        }
Example #8
0
        public NodeData[] GetNodes()
        {
            if (script == null)
            {
                script = new ConstellationScriptData();
            }

            if (script.Nodes == null)
            {
                script.Nodes = new List <NodeData> ();
            }

            return(script.Nodes.ToArray());
        }
Example #9
0
        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;
                }
            }
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #12
0
        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);
        }
Example #14
0
        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());
        }
Example #15
0
        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));
 }
Example #18
0
 public bool CanRemoveNode(NodeData node, ConstellationScriptData constellationScript)
 {
     return(true);
 }
Example #19
0
 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));
 }
Example #21
0
 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()
            }
        }
Example #23
0
 public void InitializeData()
 {
     script = new ConstellationScriptData();
     Set(script);
 }
Example #24
0
        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);
            }
        }
Example #25
0
 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()
            }
        }
Example #27
0
        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);
                 * }*/
            }
        }
Example #28
0
        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);
        }