Ejemplo n.º 1
0
    protected void DrawNodeConnection(NodeInput currentInput, float inputId)
    {
        //Draws NodeCurves between nodes in the highest parentGraph and single Input Handles
        if (!currentInput.inputNode.multiOutput && !multiInput && currentInput.inputNode.parentGraph == parentGraph)
        {
            DrawUtilities.DrawNodeCurve(currentInput.getOutputPosRect(), currentInput.rect, WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness);
        }
        else if (currentInput.inputNode.parentGraph == parentGraph && currentInput.inputNode.multiOutput && !multiInput)
        {
            DrawUtilities.DrawNodeCurve(currentInput.inputNode.getMultiOutputRect(), currentInput.rect, WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness);
        }
        else if (currentInput.inputNode.parentGraph == parentGraph && currentInput.inputNode.multiOutput && multiInput)
        {
            DrawUtilities.DrawNodeCurve(currentInput.inputNode.getMultiOutputRect(), getMultiInputRect(), WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness + currentInput.inputNode.nodeOutputs.Count);
        }
        else if(currentInput.inputNode.parentGraph != parentGraph)//Draws NodeCurves between the leftside Handles of a child Graph to the Nodes
        {
            if (parentGraph.graphNode != null)
            {
                int i = parentGraph.graphNode.nodeInputs.FindIndex(a => a.inputNode == currentInput.inputNode);

                if (i >= 0)
                {
                    Rect r = parentGraph.graphInputRects[i];
                    DrawUtilities.DrawNodeCurve(new Vector3(r.x + r.width, r.center.y, 0f), nodeRect, inputId, nodeInputs.Count);
                }
                else
                {
                    if(currentInput.inputNode.parentGraph.graphNode != null)
                    {
                        if (currentInput.inputNode.parentGraph.graphNode.multiOutput && !multiInput)
                        {
                            DrawUtilities.DrawNodeCurve(currentInput.inputNode.parentGraph.graphNode.getMultiOutputRect(), currentInput.rect, WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness);
                        }
                        else if (currentInput.inputNode.parentGraph.graphNode.multiOutput && multiInput)
                        {
                            DrawUtilities.DrawNodeCurve(currentInput.inputNode.parentGraph.graphNode.getMultiOutputRect(), getMultiInputRect(), WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness + currentInput.inputNode.nodeOutputs.Count);
                        }
                        else
                        {
                            DrawUtilities.DrawNodeCurve(currentInput.inputNode.parentGraph.graphNode.nodeOutputs[currentInput.outputPos].rect, currentInput.rect, WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness);
                        }
                    }
                }
            }
            else
            {
                if (currentInput.inputNode.parentGraph.graphNode.nodeOutputs.Count > 0)
                {
                    if (currentInput.inputNode.parentGraph.graphNode.multiOutput && !multiInput)
                    {
                        DrawUtilities.DrawNodeCurve(currentInput.inputNode.parentGraph.graphNode.getMultiOutputRect(), currentInput.rect, WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness);
                    }
                    else if (currentInput.inputNode.parentGraph.graphNode.multiOutput && multiInput)
                    {
                        DrawUtilities.DrawNodeCurve(currentInput.inputNode.parentGraph.graphNode.getMultiOutputRect(), getMultiInputRect(), WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness);
                    }
                    else if (!currentInput.inputNode.parentGraph.graphNode.multiOutput && multiInput)
                    {
                        DrawUtilities.DrawNodeCurve(currentInput.inputNode.parentGraph.graphNode.nodeOutputs[currentInput.outputPos].rect, getMultiInputRect(), WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness);
                    }
                    else
                    {
                        DrawUtilities.DrawNodeCurve(currentInput.inputNode.parentGraph.graphNode.nodeOutputs[currentInput.outputPos].rect, currentInput.rect, WorkPreferences.nodeCurveColor, WorkPreferences.nodeCurveThickness);
                    }
                }
            }
        }
        else
        {

            //Draws the MultiInput Curve between single Outputs to MultiInputs
            DrawUtilities.DrawMultiInputNodeCurve(currentInput.inputNode.nodeRect, nodeRect, 1);
        }
    }