From 71df7c434e4028805e0e19c97281adbc5429311d Mon Sep 17 00:00:00 2001 From: ousttrue Date: Fri, 10 Jun 2022 17:16:43 +0900 Subject: [PATCH] =?UTF-8?q?OnValidate=20=E3=81=A7=20m=5Fexcludes=20?= =?UTF-8?q?=E3=82=92=20Validate=20=E3=81=97=E3=81=A6=E3=81=84=E3=82=8B?= =?UTF-8?q?=E3=81=AE=E3=81=A0=E3=81=8C=E3=80=81=20Validate=20=E3=81=99?= =?UTF-8?q?=E3=82=8B=E5=89=8D=E3=81=AB=E3=82=AF=E3=83=AA=E3=82=A2=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=A6=E6=83=85=E5=A0=B1=E3=81=8C=E8=90=BD?= =?UTF-8?q?=E3=81=A1=E3=81=A6=E3=81=84=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VrmMeshIntegratorWizard.cs | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/Assets/VRM/Editor/SkinnedMeshUtility/VrmMeshIntegratorWizard.cs b/Assets/VRM/Editor/SkinnedMeshUtility/VrmMeshIntegratorWizard.cs index 2f81c5571..5d39f105c 100644 --- a/Assets/VRM/Editor/SkinnedMeshUtility/VrmMeshIntegratorWizard.cs +++ b/Assets/VRM/Editor/SkinnedMeshUtility/VrmMeshIntegratorWizard.cs @@ -184,6 +184,7 @@ namespace VRM return; } + var backup = m_excludes.ToArray(); Clear(HelpMessage.Ready, ValidationError.None); isValid = true; m_uniqueMaterials = MeshIntegratorUtility.EnumerateSkinnedMeshRenderer(m_root.transform, MeshEnumerateOption.OnlyWithoutBlendShape) @@ -198,6 +199,11 @@ namespace VRM .ToArray() ; + UpdateExcludes(backup); + } + + void UpdateExcludes(ExcludeItem[] backup) + { var exclude_map = new Dictionary(); var excludes = new List(); foreach (var x in m_root.GetComponentsInChildren()) @@ -207,23 +213,24 @@ namespace VRM { continue; } - var item = new ExcludeItem { Mesh = mesh }; + if (exclude_map.ContainsKey(mesh)) + { + continue; + } + + var item = new ExcludeItem + { + Mesh = mesh, + }; + var found = backup.FirstOrDefault(y => y.Mesh == mesh); + if (found != null) + { + item.Exclude = found.Exclude; + } excludes.Add(item); exclude_map[mesh] = item; } - foreach (var x in m_excludes) - { - if (exclude_map.TryGetValue(x.Mesh, out ExcludeItem item)) - { - // update - item.Exclude = x.Exclude; - } - } - m_excludes.Clear(); - foreach (var kv in exclude_map) - { - m_excludes.Add(kv.Value); - } + m_excludes.AddRange(excludes); } void OnWizardUpdate()