public static void CreateNewRope(Vector3 localPosition, GameObject parent = null, uint segments = 5, float length = 5)
    {
        // Create the top level object (anchor-point)
        GameObject ropeEmpty = new GameObject("Rope");

        if (parent)
        {
            ropeEmpty.transform.parent        = parent.transform;
            ropeEmpty.transform.localPosition = localPosition;
        }
        else
        {
            ropeEmpty.transform.position = localPosition;
        }

        // Add a RopeController script
        RopeController ropeController = ropeEmpty.AddComponent <RopeController>();

        ropeController._firstSegment = ropeEmpty;

        // Add a rigidbody
        ropeController._rigidbody             = ropeEmpty.AddComponent <Rigidbody>();
        ropeController._rigidbody.isKinematic = true;

        // Generate new segments
        ropeController.AddSegments(segments, length);

        // Load rope material
        ropeController._ropeMaterial = Resources.Load <Material>("Materials/RopeMaterial");
    }