From 103b575439a675c52f53a8e6ec5d14f80745dedf Mon Sep 17 00:00:00 2001 From: ousttrue Date: Fri, 1 Dec 2023 17:50:21 +0900 Subject: [PATCH] fix mesh bone. fix WriteAndReload --- .../Editor/MeshUtility/MeshUtilityDialog.cs | 4 ++-- .../Runtime/MeshUtility/MeshIntegrationResult.cs | 15 +++++++++++++++ .../UniGLTF/Runtime/MeshUtility/MeshIntegrator.cs | 5 ++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Assets/UniGLTF/Editor/MeshUtility/MeshUtilityDialog.cs b/Assets/UniGLTF/Editor/MeshUtility/MeshUtilityDialog.cs index b06889160..a2ae3207a 100644 --- a/Assets/UniGLTF/Editor/MeshUtility/MeshUtilityDialog.cs +++ b/Assets/UniGLTF/Editor/MeshUtility/MeshUtilityDialog.cs @@ -243,13 +243,13 @@ namespace UniGLTF.MeshUtility { var childAssetPath = $"{assetFolder}/{result.Integrated.IntegratedRenderer.gameObject.name}{ASSET_SUFFIX}"; Debug.LogFormat("CreateAsset: {0}", childAssetPath); - AssetDatabase.CreateAsset(result.Integrated.IntegratedRenderer.sharedMesh, childAssetPath); + result.Integrated.WriteAndReload(childAssetPath); } if (result.IntegratedNoBlendShape != null) { var childAssetPath = $"{assetFolder}/{result.IntegratedNoBlendShape.IntegratedRenderer.gameObject.name}{ASSET_SUFFIX}"; Debug.LogFormat("CreateAsset: {0}", childAssetPath); - AssetDatabase.CreateAsset(result.IntegratedNoBlendShape.IntegratedRenderer.sharedMesh, childAssetPath); + result.IntegratedNoBlendShape.WriteAndReload(childAssetPath); } } diff --git a/Assets/UniGLTF/Runtime/MeshUtility/MeshIntegrationResult.cs b/Assets/UniGLTF/Runtime/MeshUtility/MeshIntegrationResult.cs index 34b42df5a..20103d21d 100644 --- a/Assets/UniGLTF/Runtime/MeshUtility/MeshIntegrationResult.cs +++ b/Assets/UniGLTF/Runtime/MeshUtility/MeshIntegrationResult.cs @@ -2,6 +2,9 @@ using System.Collections.Generic; using System.Linq; using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif namespace UniGLTF.MeshUtility { @@ -29,6 +32,18 @@ namespace UniGLTF.MeshUtility smr.bones = bones; IntegratedRenderer = smr; } + +#if UNITY_EDITOR + public void WriteAndReload(string assetPath) + { + AssetDatabase.CreateAsset(IntegratedRenderer.sharedMesh, assetPath); + var unityPath = UnityPath.FromUnityPath(assetPath); + unityPath.ImportAsset(); + var mesh = unityPath.LoadAsset(); + // replace reloaded + IntegratedRenderer.sharedMesh = mesh; + } +#endif } public class MeshIntegrationResult diff --git a/Assets/UniGLTF/Runtime/MeshUtility/MeshIntegrator.cs b/Assets/UniGLTF/Runtime/MeshUtility/MeshIntegrator.cs index 6c3b26bb0..1f9c1c89e 100644 --- a/Assets/UniGLTF/Runtime/MeshUtility/MeshIntegrator.cs +++ b/Assets/UniGLTF/Runtime/MeshUtility/MeshIntegrator.cs @@ -128,11 +128,10 @@ namespace UniGLTF.MeshUtility }) ); - var self = renderer.transform; - var bone = self.parent; + var bone = renderer.transform; if (bone == null) { - Debug.LogWarningFormat("{0} is root gameobject.", self.name); + Debug.LogWarningFormat("{0} is root gameobject.", bone.name); return; } var boneIndex = AddBoneIfUnique(bone);