diff --git a/UMAProject/Assets/Standard Assets/UMA/Core/Scripts/UMAMeshData.cs b/UMAProject/Assets/Standard Assets/UMA/Core/Scripts/UMAMeshData.cs index 1a4c9b5f..be64186b 100644 --- a/UMAProject/Assets/Standard Assets/UMA/Core/Scripts/UMAMeshData.cs +++ b/UMAProject/Assets/Standard Assets/UMA/Core/Scripts/UMAMeshData.cs @@ -319,6 +319,18 @@ public void PrepareVertexBuffers(int size) #endif } + /// + /// Initialize UMA mesh data from Unity mesh. + /// + /// Source renderer. + public void RetrieveDataFromUnityMesh(SkinnedMeshRenderer renderer) + { + RetrieveDataFromUnityMesh(renderer.sharedMesh); + + UpdateBones(renderer.rootBone, renderer.bones); + } + + /// /// Initialize UMA mesh data from Unity mesh. /// @@ -346,17 +358,6 @@ public void RetrieveDataFromUnityMesh(Mesh sharedMesh) } } - /// - /// Initialize UMA mesh data from Unity mesh. - /// - /// Source renderer. - public void RetrieveDataFromUnityMesh(SkinnedMeshRenderer renderer) - { - RetrieveDataFromUnityMesh(renderer.sharedMesh); - - UpdateBones(renderer.rootBone, renderer.bones); - } - /// /// Validates the skinned transform hierarchy. /// @@ -364,13 +365,13 @@ public void RetrieveDataFromUnityMesh(SkinnedMeshRenderer renderer) /// Transforms. public void UpdateBones(Transform rootBone, Transform[] bones) { - var storedRoot = rootBone; + var storedRootBone = rootBone; while (rootBone.name != "Global") { rootBone = rootBone.parent; if (rootBone == null) { - rootBone = storedRoot; + rootBone = storedRootBone; break; } } @@ -456,7 +457,7 @@ public void ApplyDataToUnityMesh(SkinnedMeshRenderer renderer, UMASkeleton skele } mesh.RecalculateBounds(); - renderer.bones = bones;// skeleton.HashesToTransforms(boneNameHashes); + renderer.bones = bones != null ? bones : skeleton.HashesToTransforms(boneNameHashes); renderer.sharedMesh = mesh; renderer.rootBone = rootBone; }