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(); }