diff --git a/Assets/UniGLTF/Editor/MeshUtility/MeshUtilityDialog.cs b/Assets/UniGLTF/Editor/MeshUtility/MeshUtilityDialog.cs
index 343ecafa5..1c10a6eab 100644
--- a/Assets/UniGLTF/Editor/MeshUtility/MeshUtilityDialog.cs
+++ b/Assets/UniGLTF/Editor/MeshUtility/MeshUtilityDialog.cs
@@ -205,9 +205,9 @@ namespace UniGLTF.MeshUtility
var (results, created) = MeshUtility.Process(context.Instance, groupCopy);
- WriteAssets(context.Instance, context.AssetFolder, results, _exportTarget);
-
- MeshUtility.clear(results);
+ // TODO: this should be replaced export and reimport ?
+ WriteAssets(context.AssetFolder, context.Instance, results);
+ WritePrefab(context.AssetFolder, context.Instance);
}
catch (Exception ex)
{
@@ -223,7 +223,7 @@ namespace UniGLTF.MeshUtility
using (var context = new UndoContext("MeshUtility", _exportTarget))
{
var (results, created) = MeshUtility.Process(_exportTarget, MeshUtility.MeshIntegrationGroups);
- MeshUtility.clear(results);
+ MeshUtility.Clear(results);
foreach (var go in created)
{
@@ -239,11 +239,10 @@ namespace UniGLTF.MeshUtility
}
///
- /// Write Mesh & Prefab
+ /// Write Mesh
///
- protected virtual string WriteAssets(GameObject copy, string assetFolder, List results, GameObject prefab)
+ protected virtual void WriteAssets(string assetFolder, GameObject instance, List results)
{
- // write mesh asset
foreach (var result in results)
{
if (result.Integrated != null)
@@ -260,15 +259,21 @@ namespace UniGLTF.MeshUtility
}
}
- // prefab
+ MeshUtility.Clear(results);
+ }
+
+ ///
+ /// Write Prefab
+ ///
+ protected virtual string WritePrefab(string assetFolder, GameObject instance)
+ {
var prefabPath = $"{assetFolder}/Integrated.prefab";
Debug.Log(prefabPath);
- PrefabUtility.SaveAsPrefabAsset(copy, prefabPath, out bool success);
+ PrefabUtility.SaveAsPrefabAsset(instance, prefabPath, out bool success);
if (!success)
{
- throw new System.Exception($"PrefabUtility.SaveAsPrefabAsset: {prefabPath}");
+ throw new Exception($"PrefabUtility.SaveAsPrefabAsset: {prefabPath}");
}
-
return prefabPath;
}
diff --git a/Assets/UniGLTF/Runtime/MeshUtility/GltfMeshUtility.cs b/Assets/UniGLTF/Runtime/MeshUtility/GltfMeshUtility.cs
index 6366450b3..0ce1cad6e 100644
--- a/Assets/UniGLTF/Runtime/MeshUtility/GltfMeshUtility.cs
+++ b/Assets/UniGLTF/Runtime/MeshUtility/GltfMeshUtility.cs
@@ -166,7 +166,7 @@ namespace UniGLTF.MeshUtility
return (results, newList);
}
- public void clear(List results)
+ public void Clear(List results)
{
// 用が済んだ 統合前 の renderer を削除する
foreach (var result in results)
diff --git a/Assets/VRM/Editor/SkinnedMeshUtility/VrmMeshIntegratorWizard.cs b/Assets/VRM/Editor/SkinnedMeshUtility/VrmMeshIntegratorWizard.cs
index 7da4743f9..a059ac207 100644
--- a/Assets/VRM/Editor/SkinnedMeshUtility/VrmMeshIntegratorWizard.cs
+++ b/Assets/VRM/Editor/SkinnedMeshUtility/VrmMeshIntegratorWizard.cs
@@ -50,22 +50,27 @@ namespace VRM
return firstPerson || mod;
}
- protected override string WriteAssets(GameObject target, string assetFolder, List results, GameObject prefab)
+ List _clips;
+ protected override void WriteAssets(string assetFolder, GameObject target, List results)
{
// 統合した結果を反映した BlendShapeClip を作成して置き換える
- var clips = VRMMeshIntegratorUtility.FollowBlendshapeRendererChange(results, target, assetFolder);
-
- // reset firstperson
- if (target.GetComponent() is VRMFirstPerson firstperson)
- {
- firstperson.Reset();
- }
+ _clips = VRMMeshIntegratorUtility.FollowBlendshapeRendererChange(results, target, assetFolder);
// write mesh & prefab
- var prefabPath = base.WriteAssets(target, assetFolder, results, prefab);
+ base.WriteAssets(assetFolder, target, results);
+ // reset firstPerson
+ if (target.GetComponent() is VRMFirstPerson firstPerson)
+ {
+ firstPerson.Reset();
+ }
+ }
+
+ protected override string WritePrefab(string assetFolder, GameObject instance)
+ {
+ var prefabPath = base.WritePrefab(assetFolder, instance);
var prefabReference = AssetDatabase.LoadAssetAtPath(prefabPath);
- foreach (var clip in clips)
+ foreach (var clip in _clips)
{
var so = new SerializedObject(clip);
so.Update();
@@ -74,7 +79,6 @@ namespace VRM
prop.objectReferenceValue = prefabReference;
so.ApplyModifiedProperties();
}
-
return prefabPath;
}