private DraggedObject CreateDraggedObject(GameObject attachpoint)
    {
        var part = attachpoint.transform.parent.gameObject;
        var bpi  = part.GetComponent <BodypartInfo>();
        List <DraggedSubObject> dsos = new List <DraggedSubObject>();
        Vector2 mp = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        foreach (var metapart in bpi.MetaBody)
        {
            var              mbpi = metapart.GetComponent <BodypartInfo>();
            Vector2          pp   = metapart.transform.position;
            DraggedSubObject dso  = new DraggedSubObject()
            {
                Obj     = metapart,
                PosDiff = pp - mp
            };
            dsos.Add(dso);
        }

        return(new DraggedObject()
        {
            Items = dsos,
            AttachPoint = attachpoint
        });
    }
    private void AddAllDraggedParts(List <DraggedSubObject> dsos, GameObject obj)
    {
        var     bpi = obj.GetComponent <BodypartInfo>();
        Vector2 mp  = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        foreach (var part in bpi.MetaBody)
        {
            Vector2 pp = part.transform.position;

            DraggedSubObject dso = new DraggedSubObject()
            {
                Obj     = part,
                PosDiff = pp - mp
            };

            dsos.Add(dso);
        }
    }