@@ -59,32 +59,34 @@ public static void SaveToFile(this AvatarMetadata metadata, string guid, string
59
59
/// <returns>The <see cref="SkinnedMeshRenderer" /> if found.</returns>
60
60
public static SkinnedMeshRenderer GetMeshRenderer ( this GameObject gameObject , MeshType meshType )
61
61
{
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 )
66
67
{
67
68
68
69
SDKLogger . AvatarLoaderLogger . Log ( TAG , $ "No SkinnedMeshRenderer found on the Game Object { gameObject . name } .") ;
69
70
return null ;
70
71
}
71
-
72
+
73
+
72
74
switch ( meshType )
73
75
{
74
76
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 ) ;
76
78
break ;
77
79
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 ) ;
79
81
break ;
80
82
case MeshType . HeadMesh :
81
- mesh = children . FirstOrDefault ( child => HeadMeshNameFilter . Contains ( child . name ) ) ;
83
+ meshRenderer = childMeshes . FirstOrDefault ( child => HeadMeshNameFilter . Contains ( child . name ) ) ;
82
84
break ;
83
85
default :
84
86
throw new ArgumentOutOfRangeException ( nameof ( meshType ) , meshType , null ) ;
85
87
}
86
88
87
- if ( mesh != null ) return mesh ;
89
+ if ( meshRenderer != null ) return meshRenderer ;
88
90
89
91
SDKLogger . AvatarLoaderLogger . Log ( TAG , $ "Mesh type { meshType } not found on the Game Object { gameObject . name } .") ;
90
92
0 commit comments