public void ConvertToIKLimb(RoboticLimbMirror mirrorLimb)
    {
        //  Debug.Log("create ik leg");
        var servosMirror = servos;

        servosIK = new List <RoboticServoIK>();
        var newServos = new List <RoboticServo>();

        //Convert the mirror servos to Ik servos
        foreach (var servo in servosMirror)
        {
            var newServoIK = servo.gameObject.AddComponent(typeof(RoboticServoIK)) as RoboticServoIK;
            servo.Clone(newServoIK);
            servosIK.Add(newServoIK);
            newServos.Add(newServoIK);
        }
        for (int i = 0; i < servosMirror.Length; i++)
        {
            if (servosMirror[i].servoParent)
            {
                servosIK[i].servoParent = servosMirror[i].servoParent.gameObject.GetComponent <RoboticServoIK>();
            }
            if (servosMirror[i].servoChild)
            {
                servosIK[i].servoChild = servosMirror[i].servoChild.gameObject.GetComponent <RoboticServoIK>();
            }
        }
        foreach (var servo in servosMirror)
        {
            Destroy(servo);
        }
        //Link the RoboticServoMirror and RoboticServoIk components
        foreach (var servo in servosIK)
        {
            var mirrorPart = mirrorLimb.FindServo(servo.hostPart.ID);
            servo.SetMirrorServo(mirrorPart.GetComponent <RoboticServoMirror>());
        }
        servosMirror = new List <RoboticServoMirror>().ToArray();
        servos       = newServos.ToArray();
        DisableParts();

        var children = GetComponentsInChildren <Transform>();

        foreach (var child in children)
        {
            if (child.name.Contains("True End Point "))
            {
                trueLimbEnd = child;
                limbEnd     = trueLimbEnd;
                //  trueLimbEnd.name = "Collision Point";
                //  DebugVector.DrawVector(trueLimbEnd, DebugVector.Direction.all, 5f, .1f, Color.red, Color.white, Color.blue);
            }
        }
    }
    public void ConvertToIKLimb(RoboticLimbMirror mirrorLimb)
    {
        //  Debug.Log("create ik leg");
        var servosMirror = servos;

        servosIK = new List <RoboticServoIK>();
        var newServos = new List <RoboticServo>();

        //Convert the mirror servos to Ik servos
        foreach (var servo in servosMirror)
        {
            var newServoIK = servo.gameObject.AddComponent(typeof(RoboticServoIK)) as RoboticServoIK;
            servo.Clone(newServoIK);
            servosIK.Add(newServoIK);
            newServos.Add(newServoIK);
        }
        for (int i = 0; i < servosMirror.Length; i++)
        {
            if (servosMirror[i].servoParent)
            {
                servosIK[i].servoParent = servosMirror[i].servoParent.gameObject.GetComponent <RoboticServoIK>();
            }
            if (servosMirror[i].servoChild)
            {
                servosIK[i].servoChild = servosMirror[i].servoChild.gameObject.GetComponent <RoboticServoIK>();
            }
        }
        foreach (var servo in servosMirror)
        {
            Destroy(servo);
        }
        //Link the RoboticServoMirror and RoboticServoIk components
        foreach (var servo in servosIK)
        {
            var mirrorPart = mirrorLimb.FindServo(servo.hostPart.ID);
            servo.SetMirrorServo(mirrorPart.GetComponent <RoboticServoMirror>());
        }
        servosMirror = new List <RoboticServoMirror>().ToArray();
        servos       = newServos.ToArray();
        DisableParts();
    }