Exemple #1
0
    /// <summary>
    /// Function for adding and deleting the adjustment nodes for this nodes curves
    /// A node should have 2 adjustment nodes
    /// </summary>
    private void SetAdjustmentNodes()
    {
        adjustmentNodes = DataTools.GetCurveAdjustmentNodes(this);
        int amount = adjustmentNodes.Length;

        // Place new or delete nodes
        if (!endNode && amount != 2)
        {
            Debug.LogWarning(name + " Does not contain two adjustment nodes, nodes will be deleted or created");
            RemoveAdjustmentNodes();
            CreateAdjustmentNodes();
        }
        else if (endNode) // Delete the remaining children when this node is an end node
        {
            RemoveAdjustmentNodes();
        }

        // Assign the line parents
        for (int i = 0; i < adjustmentNodes.Length; i++)
        {
            adjustmentNodes[i].AssignParentNode(i == 0 ? this : nextNode);
        }

        if (resetCurves)
        {
            // Position the first adjustment node of this node
            if (!endNode && nextNode)
            {
                float distanceScale = Vector3.Distance(nextNode.transform.position, transform.position) * 0.4f;
                adjustmentNodes[0].transform.position = transform.position + SetAdjustmentNodeDirection() * distanceScale;
            }

            // Position the second adjustment node of the previous node
            if (prevNode)
            {
                float distanceScale = Vector3.Distance(transform.position, prevNode.transform.position) * 0.4f;
                prevNode.adjustmentNodes[1].transform.position = transform.position - SetAdjustmentNodeDirection() * distanceScale;
            }
        }
    }