From c27c4b6153dd561a9491e4f315db2d560e8ea8be Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 12 Feb 2025 14:56:20 +0900 Subject: [PATCH 1/2] ForceUniqueName before create AvatarDescription --- .../Runtime/UniHumanoid/AvatarDescription.cs | 2 +- .../Runtime/UniHumanoid/HumanoidLoader.cs | 2 +- .../{UniHumanoid => Utils}/ForceUniqueName.cs | 23 ++++++++++++++++--- .../ForceUniqueName.cs.meta | 0 4 files changed, 22 insertions(+), 5 deletions(-) rename Assets/UniGLTF/Runtime/{UniHumanoid => Utils}/ForceUniqueName.cs (79%) rename Assets/UniGLTF/Runtime/{UniHumanoid => Utils}/ForceUniqueName.cs.meta (100%) diff --git a/Assets/UniGLTF/Runtime/UniHumanoid/AvatarDescription.cs b/Assets/UniGLTF/Runtime/UniHumanoid/AvatarDescription.cs index 3327947f3..d54dded13 100644 --- a/Assets/UniGLTF/Runtime/UniHumanoid/AvatarDescription.cs +++ b/Assets/UniGLTF/Runtime/UniHumanoid/AvatarDescription.cs @@ -129,7 +129,7 @@ namespace UniHumanoid public Avatar CreateAvatar(Transform root) { // force unique name - ForceUniqueName.Process(root); + ForceUniqueName.Validate(root); return AvatarBuilder.BuildHumanAvatar(root.gameObject, ToHumanDescription(root)); } diff --git a/Assets/UniGLTF/Runtime/UniHumanoid/HumanoidLoader.cs b/Assets/UniGLTF/Runtime/UniHumanoid/HumanoidLoader.cs index 45f0ec806..ea1eea1ee 100644 --- a/Assets/UniGLTF/Runtime/UniHumanoid/HumanoidLoader.cs +++ b/Assets/UniGLTF/Runtime/UniHumanoid/HumanoidLoader.cs @@ -9,7 +9,7 @@ namespace UniHumanoid { public static Avatar LoadHumanoidAvatar(Transform root, IEnumerable<(Transform, HumanBodyBones)> boneMap) { - ForceUniqueName.Process(root); + UniGLTF.Utils.ForceUniqueName.Process(root); var description = new HumanDescription { diff --git a/Assets/UniGLTF/Runtime/UniHumanoid/ForceUniqueName.cs b/Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs similarity index 79% rename from Assets/UniGLTF/Runtime/UniHumanoid/ForceUniqueName.cs rename to Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs index 14625a9c3..51b530631 100644 --- a/Assets/UniGLTF/Runtime/UniHumanoid/ForceUniqueName.cs +++ b/Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs @@ -1,15 +1,32 @@ using System; using System.Collections.Generic; -using UniGLTF; using UnityEngine; -namespace UniHumanoid +namespace UniGLTF.Utils { - class ForceUniqueName + public class ForceUniqueName { HashSet m_uniqueNameSet = new HashSet(); int m_counter = 1; + public static bool Validate(Transform root) + { + HashSet uniqueNameSet = new HashSet(); + var transforms = root.GetComponentsInChildren(); + foreach (var t in transforms) + { + if (uniqueNameSet.Contains(t.name)) + { + UniGLTFLogger.Warning($"duplicate name: {t.name}"); + } + else + { + uniqueNameSet.Add(t.name); + } + } + return uniqueNameSet.Count == transforms.Length; + } + public static void Process(Transform root) { var uniqueName = new ForceUniqueName(); diff --git a/Assets/UniGLTF/Runtime/UniHumanoid/ForceUniqueName.cs.meta b/Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs.meta similarity index 100% rename from Assets/UniGLTF/Runtime/UniHumanoid/ForceUniqueName.cs.meta rename to Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs.meta From f9f5f37dfa7a4844acebefca902bcca26ff3ebcf Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 12 Feb 2025 15:08:52 +0900 Subject: [PATCH 2/2] rename ForceUniqueName to ForceTransformUniqueName --- Assets/UniGLTF/Runtime/UniHumanoid/AvatarDescription.cs | 2 +- Assets/UniGLTF/Runtime/UniHumanoid/HumanoidLoader.cs | 2 +- .../Utils/{ForceUniqueName.cs => ForceTransformUniqueName.cs} | 4 ++-- ...rceUniqueName.cs.meta => ForceTransformUniqueName.cs.meta} | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename Assets/UniGLTF/Runtime/Utils/{ForceUniqueName.cs => ForceTransformUniqueName.cs} (96%) rename Assets/UniGLTF/Runtime/Utils/{ForceUniqueName.cs.meta => ForceTransformUniqueName.cs.meta} (100%) diff --git a/Assets/UniGLTF/Runtime/UniHumanoid/AvatarDescription.cs b/Assets/UniGLTF/Runtime/UniHumanoid/AvatarDescription.cs index d54dded13..bc0078197 100644 --- a/Assets/UniGLTF/Runtime/UniHumanoid/AvatarDescription.cs +++ b/Assets/UniGLTF/Runtime/UniHumanoid/AvatarDescription.cs @@ -129,7 +129,7 @@ namespace UniHumanoid public Avatar CreateAvatar(Transform root) { // force unique name - ForceUniqueName.Validate(root); + ForceTransformUniqueName.Validate(root); return AvatarBuilder.BuildHumanAvatar(root.gameObject, ToHumanDescription(root)); } diff --git a/Assets/UniGLTF/Runtime/UniHumanoid/HumanoidLoader.cs b/Assets/UniGLTF/Runtime/UniHumanoid/HumanoidLoader.cs index ea1eea1ee..f86f2a844 100644 --- a/Assets/UniGLTF/Runtime/UniHumanoid/HumanoidLoader.cs +++ b/Assets/UniGLTF/Runtime/UniHumanoid/HumanoidLoader.cs @@ -9,7 +9,7 @@ namespace UniHumanoid { public static Avatar LoadHumanoidAvatar(Transform root, IEnumerable<(Transform, HumanBodyBones)> boneMap) { - UniGLTF.Utils.ForceUniqueName.Process(root); + UniGLTF.Utils.ForceTransformUniqueName.Process(root); var description = new HumanDescription { diff --git a/Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs b/Assets/UniGLTF/Runtime/Utils/ForceTransformUniqueName.cs similarity index 96% rename from Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs rename to Assets/UniGLTF/Runtime/Utils/ForceTransformUniqueName.cs index 51b530631..31e184f58 100644 --- a/Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs +++ b/Assets/UniGLTF/Runtime/Utils/ForceTransformUniqueName.cs @@ -4,7 +4,7 @@ using UnityEngine; namespace UniGLTF.Utils { - public class ForceUniqueName + public class ForceTransformUniqueName { HashSet m_uniqueNameSet = new HashSet(); int m_counter = 1; @@ -29,7 +29,7 @@ namespace UniGLTF.Utils public static void Process(Transform root) { - var uniqueName = new ForceUniqueName(); + var uniqueName = new ForceTransformUniqueName(); var transforms = root.GetComponentsInChildren(); foreach (var t in transforms) { diff --git a/Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs.meta b/Assets/UniGLTF/Runtime/Utils/ForceTransformUniqueName.cs.meta similarity index 100% rename from Assets/UniGLTF/Runtime/Utils/ForceUniqueName.cs.meta rename to Assets/UniGLTF/Runtime/Utils/ForceTransformUniqueName.cs.meta