Skip to content

Commit 91c0cef

Browse files
committed
chore: updated logic to filter out unnassigned skin meshes
1 parent 547f82f commit 91c0cef

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

Runtime/Core/Scripts/Extensions/ExtensionMethods.cs

+11-9
Original file line numberDiff line numberDiff line change
@@ -59,32 +59,34 @@ public static void SaveToFile(this AvatarMetadata metadata, string guid, string
5959
/// <returns>The <see cref="SkinnedMeshRenderer" /> if found.</returns>
6060
public static SkinnedMeshRenderer GetMeshRenderer(this GameObject gameObject, MeshType meshType)
6161
{
62-
SkinnedMeshRenderer mesh;
63-
List<SkinnedMeshRenderer> children = gameObject.GetComponentsInChildren<SkinnedMeshRenderer>().ToList();
64-
65-
if (children.Count == 0)
62+
SkinnedMeshRenderer meshRenderer;
63+
var childMeshes = gameObject.GetComponentsInChildren<SkinnedMeshRenderer>()
64+
.Where(mesh => mesh.sharedMesh != null) // Filter out any SkinnedMeshRenderer with no mesh
65+
.ToArray();
66+
if (childMeshes.Length == 0)
6667
{
6768

6869
SDKLogger.AvatarLoaderLogger.Log(TAG, $"No SkinnedMeshRenderer found on the Game Object {gameObject.name}.");
6970
return null;
7071
}
71-
72+
73+
7274
switch (meshType)
7375
{
7476
case MeshType.BeardMesh:
75-
mesh = children.FirstOrDefault(child => BEARD_MESH_NAME_FILTER == child.name);
77+
meshRenderer = childMeshes.FirstOrDefault(child => BEARD_MESH_NAME_FILTER == child.name);
7678
break;
7779
case MeshType.TeethMesh:
78-
mesh = children.FirstOrDefault(child => TEETH_MESH_NAME_FILTER == child.name);
80+
meshRenderer = childMeshes.FirstOrDefault(child => TEETH_MESH_NAME_FILTER == child.name);
7981
break;
8082
case MeshType.HeadMesh:
81-
mesh = children.FirstOrDefault(child => HeadMeshNameFilter.Contains(child.name));
83+
meshRenderer = childMeshes.FirstOrDefault(child => HeadMeshNameFilter.Contains(child.name));
8284
break;
8385
default:
8486
throw new ArgumentOutOfRangeException(nameof(meshType), meshType, null);
8587
}
8688

87-
if (mesh != null) return mesh;
89+
if (meshRenderer != null) return meshRenderer;
8890

8991
SDKLogger.AvatarLoaderLogger.Log(TAG, $"Mesh type {meshType} not found on the Game Object {gameObject.name}.");
9092

0 commit comments

Comments
 (0)