Example #1
0
    private static GameObject createScaler(RoboJoint3 obj, GameObject newParent, int xRot, int yRot, int zRot)
    {
        GameObject parentObject = new GameObject();         //create an 'empty' object

        parentObject.name             = "Scaler " + obj.name;
        parentObject.transform.parent = newParent.transform;
        //parentObject.transform.localScale = obj.transform.localScale;
        //Vector3 currScale = newParent.transform.parent.transform.localScale;
        //parentObject.transform.localScale = new Vector3((float)(1/currScale.x),(float)(1/currScale.y),(float)(1/currScale.z));//obj.transform.localScale;
        //parentObject.transform.localPosition = new Vector3(0,0,0);
        obj.transform.parent = parentObject.transform;
        //obj.transform.localScale = new Vector3(1,1,1);
        parentObject.transform.Rotate(xRot, yRot, zRot);
        return(parentObject);
    }
Example #2
0
    void LoadBot(string path)
    {
        //SceneManager.LoadScene("empty");


        GameObject canvas = GameObject.Find("Canvas");

        canvas.name = "Canvas Del";
        GameObject.DestroyImmediate(canvas);
        UnityEngine.Object cPrefab = Resources.Load("Canvas");
        canvas      = (GameObject)GameObject.Instantiate(cPrefab, new Vector3(0, 0, 0), Quaternion.identity);
        canvas.name = "Canvas";
        Debug.Log(path);
        GameObject parentObj = GameObject.Find("GameObject");

        parentObj.name = "GameObject Del";
        int childs = parentObj.transform.childCount;

        /*for (int i = childs - 1; i >= 0; i--)
         * {
         *      GameObject.DestroyImmediate(transform.GetChild(i).gameObject);
         * }*/
        GameObject.DestroyImmediate(parentObj);
        parentObj = new GameObject("GameObject");
        parentObj.AddComponent <Serial>();
        parentObj.name = "GameObject";
        InverseKinematics ik = parentObj.AddComponent <InverseKinematics>();

        //DontDestroyOnLoad(parentObj);
        UnityEngine.Object bPrefab = Resources.Load("Button");
        GameObject         newButt = (GameObject)GameObject.Instantiate(bPrefab, new Vector3(-109f, -75, 0), Quaternion.identity);

        newButt.transform.SetParent(GameObject.Find("Canvas").transform, false);
        newButt.GetComponentInChildren <Text>().text = "Inverse Kinematics";
        newButt.name = "IK";
        newButt.transform.GetComponent <RectTransform>().anchorMin = new Vector2(1, 1);
        newButt.transform.GetComponent <RectTransform>().anchorMax = new Vector2(1, 1);
        //newButt.GetComponent<Button>().onClick.AddListener(delegate { Load(); });
        newButt.GetComponent <Button>().onClick.AddListener(() => ik.btn_StartIK());
        var sr           = new StreamReader(path);
        var fileContents = sr.ReadToEnd();

        sr.Close();

        string [,] inputs = new string[50, 10];
        var lines = fileContents.Split("\n"[0]);
        int count = 0;

        foreach (string line in lines)
        {
            var lineElements = line.Split(" "[0]);
            int count2       = 0;
            foreach (string word in lineElements)
            {
                //Debug.Log(word);
                inputs[count, count2] = word;
                count2++;
            }
            Debug.Log(count + " " + line);
            count++;
        }

        int sliderCount = 0;
        int armsNo      = Int32.Parse(inputs[0, 0]);

        ik.jointCount = armsNo + 1;
        for (int i = 0; i < armsNo; i++)
        {
            //Debug.Log(inputs[3*armsNo+1+1,0]);
            //Debug.Log(ToLiteral(inputs[3*armsNo+1+1,0]));
            //Debug.Log("C:/Users/Victor/Documents/untitled.obj");
            //Debug.Log(ToLiteral("C:/Users/Victor/Documents/untitled.obj"));
            GameObject obj = loadAndDisplayMesh(inputs[3 * armsNo + 1 + 1 + i, 0].Replace("\r", ""));
            obj.transform.SetParent(parentObj.transform);
            obj.name = i.ToString() + "," + (i + 1).ToString();
            //obj.AddComponent<MeshCollider>();
            //obj.GetComponent<MeshCollider>().convex = true;
            var colli = obj.AddComponent <NonConvexMeshCollider>();
            colli.avoidExceedingMesh = true;
            colli.boxesPerEdge       = 20;
            colli.Calculate();
            Limb lmb = obj.AddComponent <Limb>();
            lmb.otherScale = Int32.Parse(inputs[i + 1, 0]);
            Debug.Log(inputs[5 * armsNo + 9 + i, 0]);;
            lmb.overlap = float.Parse(inputs[5 * armsNo + 9 + i, 0], CultureInfo.InvariantCulture);
            lmb.offsetX = float.Parse(inputs[6 * armsNo + 9 + i, 0], CultureInfo.InvariantCulture);
            GameObject obj2 = loadAndDisplayMesh(inputs[4 * armsNo + 3, 0].Replace("\r", ""));
            //obj2.transform.Rotate(new Vector3(Int32.Parse(inputs[armsNo*2+1+i,0]), Int32.Parse(inputs[armsNo*2+1+i,1]), Int32.Parse(inputs[armsNo*2+1+i,2])));
            obj2.AddComponent <MeshCollider>();
            obj2.GetComponent <MeshCollider>().convex = true;
            obj2.transform.SetParent(parentObj.transform);
            obj2.name = i.ToString();
            if (i == 0)
            {
                RoboJoint rbj2 = obj2.AddComponent <RoboJoint>();
                int       refX = Int32.Parse(inputs[7 * armsNo + 14 + i, 0]);
                int       refY = Int32.Parse(inputs[7 * armsNo + 14 + i, 1]);
                int       refZ = Int32.Parse(inputs[7 * armsNo + 14 + i, 2]);
                rbj2.q2   = Quaternion.Euler(refX, refY, refZ);
                rbj2.yOff = float.Parse(inputs[7 * armsNo + 9, 1], CultureInfo.InvariantCulture);
            }
            else
            {
                RoboJoint3 rbj2 = obj2.AddComponent <RoboJoint3>();
                rbj2.length = Int32.Parse(inputs[armsNo + i, 0]);
                rbj2.d      = float.Parse(inputs[armsNo + i, 1], CultureInfo.InvariantCulture);
                rbj2.xRot   = Int32.Parse(inputs[armsNo * 2 + 1 + i, 0]);
                rbj2.yRot   = Int32.Parse(inputs[armsNo * 2 + 1 + i, 1]);
                rbj2.zRot   = Int32.Parse(inputs[armsNo * 2 + 1 + i, 2]);

                //rbj2.theta = float.Parse(inputs[armsNo+i,1], CultureInfo.InvariantCulture);
                //rbj2.alpha = float.Parse(inputs[armsNo+i,2], CultureInfo.InvariantCulture);
                int refX = Int32.Parse(inputs[7 * armsNo + 14 + i, 0]);
                int refY = Int32.Parse(inputs[7 * armsNo + 14 + i, 1]);
                int refZ = Int32.Parse(inputs[7 * armsNo + 14 + i, 2]);
                rbj2.q2 = Quaternion.Euler(refX, refY, refZ);
            }

            Debug.Log("Joint to render: " + i);
            Debug.Log(" value:  " + inputs[7 * armsNo + 11, i]);
            if (inputs[7 * armsNo + 11, i].Trim() == "0")
            {
                obj2.GetComponent <MeshRenderer>().enabled = false;
                obj2.GetComponent <Collider>().enabled     = false;
            }
            UnityEngine.Object pPrefab   = Resources.Load("Slider (1)");   // note: not .prefab!
            GameObject         newSlider = (GameObject)GameObject.Instantiate(pPrefab, new Vector3(98, -10 - sliderCount * 20, 0), Quaternion.identity);
            //GameObject newSlider = Instantiate(Slider) as GameObject;
            sliderCount++;
            newSlider.transform.SetParent(GameObject.Find("Canvas").transform, false);
            newSlider.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
            newSlider.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
            newSlider.name = "Slider (" + (2 * i).ToString() + ")";
            //newSlider.GetComponent<Slider>().label = "Slider (" + (i).ToString() + ") Theta";
            if (inputs[4 * armsNo + 4 + i, 0] == "0")
            {
                newSlider.GetComponent <Slider>().interactable      = false;
                newSlider.GetComponent <RectTransform>().localScale = new Vector3(0f, 0f, 0f);
                ;
                sliderCount--;
            }
            else
            {
                GameObject textObj = new GameObject("myTextGO");
                textObj.transform.position = new Vector3(229.4f, -30.4f - sliderCount * 20, 0);
                textObj.transform.SetParent(GameObject.Find("Canvas").transform, false);
                //textObj.transform.SetParent(newSlider.transform);
                Text myText = textObj.AddComponent <Text>();
                myText.text = "Arm " + (i).ToString() + "- Theta";
                myText.font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
                textObj.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
                textObj.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
                if (i < armsNo)
                {
                    //if (i >0){
                    //newSlider.GetComponent<Slider>().value = float.Parse(inputs[armsNo+i,2], CultureInfo.InvariantCulture);
                    newSlider.GetComponent <Slider>().value = float.Parse(inputs[armsNo + i + 1, 2], CultureInfo.InvariantCulture);
                }
            }
            GameObject newSlider2 = (GameObject)GameObject.Instantiate(pPrefab, new Vector3(98, -10 - sliderCount * 20, 0), Quaternion.identity);
            //GameObject newSlider = Instantiate(Slider) as GameObject;
            sliderCount++;
            newSlider2.transform.SetParent(GameObject.Find("Canvas").transform, false);
            newSlider2.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
            newSlider2.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
            newSlider2.name = "Slider (" + (2 * i + 1).ToString() + ")";
            //newSlider2.label = "Slider (" + (i).ToString() + ") Alpha";
            if (inputs[4 * armsNo + 4 + i, 1] == "0")
            {
                sliderCount--;
                newSlider2.GetComponent <Slider>().interactable      = false;
                newSlider2.GetComponent <RectTransform>().localScale = new Vector3(0f, 0f, 0f);
            }
            else
            {
                GameObject textObj = new GameObject("myTextGO");
                textObj.transform.position = new Vector3(229.4f, -30.4f - sliderCount * 20, 0);
                textObj.transform.SetParent(GameObject.Find("Canvas").transform, false);
                //textObj.transform.SetParent(newSlider2.transform);
                //textObj.transform.localPosition = new Vector3(198.6f,-43f,0f);
                Debug.Log(newSlider2.name);
                Text myText = textObj.AddComponent <Text>();
                myText.text = "Arm " + (i).ToString() + "- Alpha";
                myText.font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
                textObj.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
                textObj.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
                //if (i > 0){
                //newSlider2.GetComponent<Slider>().value = float.Parse(inputs[armsNo+i,3], CultureInfo.InvariantCulture);
                if (i < armsNo)
                {
                    newSlider2.GetComponent <Slider>().value = float.Parse(inputs[armsNo + i + 1, 3], CultureInfo.InvariantCulture);
                }
            }
            GameObject newSlider8 = (GameObject)GameObject.Instantiate(pPrefab, new Vector3(98, -10 - sliderCount * 20, 0), Quaternion.identity);
            //GameObject newSlider = Instantiate(Slider) as GameObject;
            //sliderCount ++;
            //newSlider8.transform.SetParent(GameObject.Find("Canvas").transform, false);
            newSlider8.name = "Slider (l" + (2 * i).ToString() + ")";
            newSlider8.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
            newSlider8.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
            //newSlider2.label = "Slider (" + (i).ToString() + ") Alpha";
            if (inputs[4 * armsNo + 4 + i, 2] == "0")
            {
                sliderCount--;
                newSlider8.GetComponent <Slider>().interactable      = false;
                newSlider8.GetComponent <RectTransform>().localScale = new Vector3(0f, 0f, 0f);
                newSlider8.GetComponent <Slider>().maxValue          = 2 * float.Parse(inputs[armsNo + i, 0], CultureInfo.InvariantCulture);
                newSlider8.GetComponent <Slider>().minValue          = float.Parse(inputs[armsNo + i, 0], CultureInfo.InvariantCulture);
                newSlider8.GetComponent <Slider>().value             = float.Parse(inputs[armsNo + i, 0], CultureInfo.InvariantCulture);
                ;
            }
            else
            {
                //GameObject textObj = new GameObject("myTextGO");
                //textObj.transform.position = new Vector3(229.4f, -30.4f -sliderCount*20, 0);
                //textObj.transform.SetParent(GameObject.Find("Canvas").transform, false);
                //textObj.transform.SetParent(newSlider8.transform);
                //textObj.transform.localPosition = new Vector3(198.6f,-43f,0f);
                //Text myText = textObj.AddComponent<Text>();
                //myText.text = "Slider (" + (i).ToString() + ") length";
                //myText.font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
                //myText.horizontalOverflow = HorizontalWrapMode.Overflow;
                //textObj.transform.GetComponent<RectTransform>().anchorMin = new Vector2(0,1);
                //textObj.transform.GetComponent<RectTransform>().anchorMax = new Vector2(0,1);
                //newSlider8.GetComponent<RectTransform>().SetSizeWithCurrentAnchors( RectTranform.Axis.Horizontal, 150);
            }
        }

        GameObject obj3 = loadAndDisplayMesh(inputs[5 * armsNo + 6, 0].Replace("\r", ""));

        obj3.AddComponent <MeshCollider>();
        obj3.GetComponent <MeshCollider>().convex = true;
        obj3.name = (armsNo).ToString();
        var colli3 = obj3.AddComponent <NonConvexMeshCollider>();

        colli3.avoidExceedingMesh = true;
        colli3.boxesPerEdge       = 20;
        //colli3.Calculate();
        //obj3.AddComponent<MeshCollider>();
        RoboJoint3 rbj3  = obj3.AddComponent <RoboJoint3>();
        int        refX3 = Int32.Parse(inputs[8 * armsNo + 14, 0]);
        int        refY3 = Int32.Parse(inputs[8 * armsNo + 14, 1]);
        int        refZ3 = Int32.Parse(inputs[8 * armsNo + 14, 2]);

        rbj3.q2     = Quaternion.Euler(refX3, refY3, refZ3);
        rbj3.length = Int32.Parse(inputs[armsNo * 2, 0]);
        Debug.Log(inputs[armsNo * 2, 1]);
        rbj3.d          = float.Parse(inputs[armsNo * 2, 1], CultureInfo.InvariantCulture);
        rbj3.otherScale = Int32.Parse(inputs[armsNo, 2]);
        obj3.transform.SetParent(parentObj.transform);
        //Debug.Log(" HERHE " + (inputs[7*armsNo+12,0].Contains("0")));
        //Debug.Log(" HERHE " + (String.Compare(inputs[7*armsNo+12,0],"1")));
        if (inputs[7 * armsNo + 12, 0].Contains("1"))
        {
            rbj3.rotGripper = false;
        }
        UnityEngine.Object pPrefab2   = Resources.Load("Slider (1)");       // note: not .prefab!
        GameObject         newSlider3 = (GameObject)GameObject.Instantiate(pPrefab2, new Vector3(98, -10 - sliderCount * 20, 0), Quaternion.identity);

        sliderCount++;
        //GameObject newSlider = Instantiate(Slider) as GameObject;
        newSlider3.transform.SetParent(GameObject.Find("Canvas").transform, false);
        newSlider3.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
        newSlider3.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
        newSlider3.name = "Slider (" + (2 * armsNo).ToString() + ")";
        //newSlider3.label = "Slider (" + (armsNo).ToString() + ") Theta";
        if (inputs[4 * armsNo + 4 + armsNo, 0] == "0")
        {
            sliderCount--;
            newSlider3.GetComponent <Slider>().interactable      = false;
            newSlider3.GetComponent <RectTransform>().localScale = new Vector3(0f, 0f, 0f);
        }
        else
        {
            GameObject textObj = new GameObject("myTextGO");
            textObj.transform.position = new Vector3(229.4f, -30.4f - sliderCount * 20, 0);
            textObj.transform.SetParent(GameObject.Find("Canvas").transform, false);
            //textObj.transform.SetParent(newSlider3.transform);
            //textObj.transform.localPosition = new Vector3(198.6f,-43f,0f);
            Text myText = textObj.AddComponent <Text>();
            myText.text = "Hand " + (armsNo).ToString() + "- Theta";
            myText.font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
            textObj.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
            textObj.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
            newSlider3.GetComponent <Slider>().value = float.Parse(inputs[armsNo * 2, 2], CultureInfo.InvariantCulture);
        }
        GameObject newSlider4 = (GameObject)GameObject.Instantiate(pPrefab2, new Vector3(98, -10 - sliderCount * 20, 0), Quaternion.identity);

        sliderCount++;
        //GameObject newSlider = Instantiate(Slider) as GameObject;
        newSlider4.transform.SetParent(GameObject.Find("Canvas").transform, false);
        newSlider4.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
        newSlider4.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
        newSlider4.name = "Slider (" + (2 * armsNo + 1).ToString() + ")";
        //newSlider4.label = "Slider (" + (armsNo).ToString() + ") Alpha";
        if (inputs[4 * armsNo + 4 + armsNo, 1] == "0")
        {
            sliderCount--;
            newSlider4.GetComponent <Slider>().interactable      = false;
            newSlider4.GetComponent <RectTransform>().localScale = new Vector3(0f, 0f, 0f);
        }
        else
        {
            GameObject textObj = new GameObject("myTextGO");
            textObj.transform.position = new Vector3(229.4f, -30.4f - sliderCount * 20, 0);
            textObj.transform.SetParent(GameObject.Find("Canvas").transform, false);
            //textObj.transform.SetParent(newSlider4.transform);
            //textObj.transform.localPosition = new Vector3(198.6f,-43f,0f);
            Text myText = textObj.AddComponent <Text>();
            myText.text = "Hand " + (armsNo).ToString() + "- Alpha";
            myText.font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
            textObj.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
            textObj.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
            newSlider4.GetComponent <Slider>().value = float.Parse(inputs[armsNo * 2, 2], CultureInfo.InvariantCulture);
        }


        //Debug.Log(inputs[5*armsNo+6,0].Replace("\r", ""));

        /*GameObject obj4 = loadAndDisplayMesh(inputs[4*armsNo+7,0].Replace("\r", ""));
         * obj4.AddComponent<MeshCollider>();
         * obj4.GetComponent<MeshCollider>().convex = true;
         * obj4.name = "grabber";
         * //obj3.AddComponent<MeshCollider>();
         * grabber g4 = obj4.AddComponent<grabber>();
         * //rbj3.length = Int32.Parse(inputs[armsNo*2,0]);
         * //rbj3.d = Int32.Parse(inputs[armsNo*2,1]);
         * obj4.transform.SetParent(parentObj.transform);
         * g4.parent = obj3;*/

        GameObject newSlider5 = (GameObject)GameObject.Instantiate(pPrefab2, new Vector3(98, -10 - sliderCount * 20, 0), Quaternion.identity);

        sliderCount++;
        //GameObject newSlider = Instantiate(Slider) as GameObject;
        newSlider5.transform.SetParent(GameObject.Find("Canvas").transform, false);
        newSlider5.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
        newSlider5.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
        newSlider5.name = "Slider (" + (2 * armsNo + 2).ToString() + ")";
        newSlider5.GetComponent <Slider>().maxValue = 100f;
        newSlider5.GetComponent <Slider>().minValue = 30f;
        newSlider5.GetComponent <Slider>().value    = 100f;
        //newSlider4.label = "Slider (" + (armsNo).ToString() + ") Alpha";
        GameObject textObj2 = new GameObject("myTextGO");

        textObj2.transform.position = new Vector3(229.4f, -30.4f - sliderCount * 20, 0);
        textObj2.transform.SetParent(GameObject.Find("Canvas").transform, false);
        //textObj2.transform.SetParent(newSlider5.transform);
        //textObj2.transform.localPosition = new Vector3(198.6f,-43f,0f);
        Text myText2 = textObj2.AddComponent <Text>();

        myText2.text = "Slider grab";
        myText2.font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
        textObj2.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
        textObj2.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);

        GameObject newSlider9 = (GameObject)GameObject.Instantiate(pPrefab2, new Vector3(98, -10 - sliderCount * 20, 0), Quaternion.identity);

        //GameObject newSlider = Instantiate(Slider) as GameObject;
        //sliderCount ++;
        //newSlider9.transform.SetParent(GameObject.Find("Canvas").transform, false);
        newSlider9.name = "Slider (l" + (2 * armsNo).ToString() + ")";
        newSlider9.transform.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
        newSlider9.transform.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);
        //newSlider2.label = "Slider (" + (i).ToString() + ") Alpha";
        Debug.Log(" ASDasdas" + inputs[5 * armsNo + 4, 2]);
        if (inputs[5 * armsNo + 4, 2] == "0")
        {
            sliderCount--;
            newSlider9.GetComponent <Slider>().interactable      = false;
            newSlider9.GetComponent <RectTransform>().localScale = new Vector3(0f, 0f, 0f);
            ;
        }
        else
        {
            //GameObject textObj = new GameObject("myTextGO");
            //textObj.transform.position = new Vector3(229.4f, -30.4f -sliderCount*20, 0);
            //textObj.transform.SetParent(GameObject.Find("Canvas").transform, false);
            //textObj.transform.SetParent(newSlider9.transform);
            //textObj.transform.localPosition = new Vector3(198.6f,-43f,0f);
            //Text myText = textObj.AddComponent<Text>();
            //myText.text = "Slider (" + (armsNo).ToString() + ") length";
            //myText.font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
            //myText.horizontalOverflow = HorizontalWrapMode.Overflow;
            //textObj.transform.GetComponent<RectTransform>().anchorMin = new Vector2(0,1);
            //textObj.transform.GetComponent<RectTransform>().anchorMax = new Vector2(0,1);
            newSlider9.GetComponent <Slider>().maxValue = 2 * float.Parse(inputs[armsNo * 2, 0], CultureInfo.InvariantCulture);
            newSlider9.GetComponent <Slider>().minValue = float.Parse(inputs[armsNo * 2, 0], CultureInfo.InvariantCulture);
            newSlider9.GetComponent <Slider>().value    = float.Parse(inputs[armsNo * 2, 0], CultureInfo.InvariantCulture);
            //newSlider8.GetComponent<RectTransform>().SetSizeWithCurrentAnchors( RectTranform.Axis.Horizontal, 150);
        }



        GameObject obj5 = loadAndDisplayMesh(inputs[5 * armsNo + 7, 0].Replace("\r", ""));

        obj5.AddComponent <MeshCollider>();
        obj5.GetComponent <MeshCollider>().convex = true;
        obj5.name = "hand 1";
        //obj3.AddComponent<MeshCollider>();
        grabberHand gh5 = obj5.AddComponent <grabberHand>();

        //rbj3.length = Int32.Parse(inputs[armsNo*2,0]);
        //rbj3.d = Int32.Parse(inputs[armsNo*2,1]);
        obj5.transform.SetParent(parentObj.transform);
        gh5.parent      = obj3;
        gh5.jointParent = obj3;
        gh5.offsets.x   = float.Parse(inputs[7 * armsNo + 13, 0], CultureInfo.InvariantCulture);
        gh5.offsets.y   = float.Parse(inputs[7 * armsNo + 13, 1], CultureInfo.InvariantCulture);
        gh5.offsets.z   = float.Parse(inputs[7 * armsNo + 13, 2], CultureInfo.InvariantCulture);

        //gh5.xscale = 2f;

        gh5.sliderNo = newSlider5.name;

        GameObject obj6 = loadAndDisplayMesh(inputs[5 * armsNo + 8, 0].Replace("\r", ""));

        obj6.AddComponent <MeshCollider>();
        obj6.GetComponent <MeshCollider>().convex = true;
        obj6.name = "hand 2";
        //obj3.AddComponent<MeshCollider>();
        grabberHand gh6 = obj6.AddComponent <grabberHand>();

        //rbj3.length = Int32.Parse(inputs[armsNo*2,0]);
        //rbj3.d = Int32.Parse(inputs[armsNo*2,1]);
        obj6.transform.SetParent(parentObj.transform);
        gh6.parent      = obj3;
        gh6.jointParent = obj3;
        gh6.xscale      = 2f;
        gh6.sliderNo    = gh5.sliderNo;
        gh6.offsets.x   = float.Parse(inputs[7 * armsNo + 13, 0], CultureInfo.InvariantCulture);
        gh6.offsets.y   = float.Parse(inputs[7 * armsNo + 13, 1], CultureInfo.InvariantCulture);
        gh6.offsets.z   = float.Parse(inputs[7 * armsNo + 13, 2], CultureInfo.InvariantCulture);



        GameObject obj7 = loadAndDisplayMesh(inputs[4 * armsNo + 2, 0].Replace("\r", ""));

        //obj7.AddComponent<MeshCollider>();
        //obj7.GetComponent<MeshCollider>().convex = true;
        obj7.name = "base";
        //obj3.AddComponent<MeshCollider>();
        var colli7 = obj7.AddComponent <NonConvexMeshCollider>();

        colli7.avoidExceedingMesh = true;
        colli7.boxesPerEdge       = 30;
        //colli7.Calculate();
        Base b7 = obj7.AddComponent <Base>();

        b7.offset.x = float.Parse(inputs[7 * armsNo + 9, 0], CultureInfo.InvariantCulture);
        b7.offset.y = float.Parse(inputs[7 * armsNo + 9, 1], CultureInfo.InvariantCulture);
        b7.offset.z = float.Parse(inputs[7 * armsNo + 9, 2], CultureInfo.InvariantCulture);
        b7.scale    = float.Parse(inputs[7 * armsNo + 10, 0], CultureInfo.InvariantCulture);

        int        bitsNo = Int32.Parse(inputs[8 * armsNo + 15, 0]);
        GameObject obj8;

        for (int k = 0; k < bitsNo; k++)
        {
            Debug.Log(inputs[8 * armsNo + 15 + k, 0].Replace("\r", ""));
            obj8 = loadAndDisplayMesh(inputs[8 * armsNo + 16 + k, 0].Replace("\r", ""));
            //obj8.AddComponent<MeshCollider>();
            //obj8.GetComponent<MeshCollider>().convex = true;
            obj8.name = "bit" + k.ToString();
            Bits bit = obj8.AddComponent <Bits>();
            bit.jointNum    = (inputs[8 * armsNo + 16 + k, 1].Replace("\r", ""));
            bit.jointRotNum = Int32.Parse(inputs[8 * armsNo + 16 + k, 2].Replace("\r", ""));
            bit.scale       = float.Parse(inputs[8 * armsNo + 16 + k, 3].Replace("\r", ""));
            bit.offset.x    = float.Parse(inputs[8 * armsNo + 16 + k, 4].Replace("\r", ""));
            bit.offset.y    = float.Parse(inputs[8 * armsNo + 16 + k, 5].Replace("\r", ""));
            bit.offset.z    = float.Parse(inputs[8 * armsNo + 16 + k, 6].Replace("\r", ""));
            bit.useLocal    = Int32.Parse(inputs[8 * armsNo + 16 + k, 7].Replace("\r", ""));
        }
    }