/// <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; } } }