private void UpdateBonePositions() { //For core corePosition = leapManager.GetPalmWorldPosition(); core.GetComponent <CoreManager>().targetPosition = corePosition; //For palm for (int i = 0; i < palmBoneCount; i++) { //Scale all offsets, based on grib strength //--- //Update stored positions/rotations palmBoneRotations [i] = leapManager.GetPalmRotation() /** Quaternion.Euler(Vector3.up * 180) * Quaternion.Euler(Vector3.forward * 180)*/; //EXTEND HERE, TO ACCOMODATE MORE PALMBONES! //palmBonePositions [i] = manager.GetPalmWorldPosition () +palmBoneOffsets [i]; Vector3 newOffset = -palmBoneOffsets [i]; newOffset = Quaternion.Euler(leapManager.GetPalmRotation().eulerAngles) * newOffset; palmBonePositions [i] = leapManager.GetPalmWorldPosition() + newOffset * fingerBoneScale * 0.75f; //Update bones palm_bones [i].GetComponent <BoneManager>().targetPosition = palmBonePositions[i]; palm_bones [i].GetComponent <BoneManager>().targetRotation = palmBoneRotations[i]; } //For fingers for (int i = 0; i < fingerCount; i++) { for (int j = 0; j < fingerBoneCount; j++) { //Treat positions differently, depending on if it's thumb or some other finger switch (i) { case 0: //Thumb switch (j) { case 0: fingerBonePositions [i, j] = leapManager.GetBoneCenterWorldPosition(i, 1); break; case 1: fingerBonePositions [i, j] = leapManager.GetBoneBaseWorldPosition(i, 2); break; case 2: fingerBonePositions [i, j] = leapManager.GetBoneCenterWorldPosition(i, 2); break; case 3: fingerBonePositions [i, j] = leapManager.GetBoneBaseWorldPosition(i, 3); break; } break; default: //Other fingers //Update stored positions/rotations fingerBonePositions [i, j] = leapManager.GetBoneCenterWorldPosition(i, j); break; } fingerBoneRotations [i, j] = leapManager.GetBoneRotation(i, j); //Update bones finger_bones [i, j].GetComponent <BoneManager>().targetPosition = fingerBonePositions[i, j]; finger_bones [i, j].GetComponent <BoneManager>().targetRotation = fingerBoneRotations[i, j]; } } }