Skip to content

Commit 2427bf9

Browse files
[SDK-926] feat: added optional parameter to filter meshes (#267)
- improved GetMeshRenderer function to optionally ignore null meshes - added function to enable updating the head mesh on EyeAnimationHandler
1 parent 0c85044 commit 2427bf9

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

Runtime/Core/Scripts/Animation/EyeAnimationHandler.cs

+7-2
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ public void Initialize()
8181
/// </summary>
8282
private void Awake()
8383
{
84-
headMesh = gameObject.GetMeshRenderer(MeshType.HeadMesh);
85-
hasBlinkBlendShapes = HasBlinkBlendshapes();
84+
UpdateHeadMesh();
8685
ValidateSkeleton();
8786

8887
if (!hasBlinkBlendShapes)
@@ -101,6 +100,12 @@ private void Awake()
101100
}
102101
}
103102

103+
public void UpdateHeadMesh()
104+
{
105+
headMesh = gameObject.GetMeshRenderer(MeshType.HeadMesh, true);
106+
HasBlinkBlendshapes();
107+
}
108+
104109
private bool HasBlinkBlendshapes()
105110
{
106111
eyeBlinkLeftBlendShapeIndex = headMesh.sharedMesh.GetBlendShapeIndex(EYE_BLINK_LEFT_BLEND_SHAPE_NAME);

Runtime/Core/Scripts/Extensions/ExtensionMethods.cs

+7-3
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,16 @@ public static void SaveToFile(this AvatarMetadata metadata, string guid, string
5656
/// </summary>
5757
/// <param name="gameObject">The <see cref="GameObject" /> to search for a <see cref="SkinnedMeshRenderer" />.</param>
5858
/// <param name="meshType">Determines the <see cref="MeshType" /> to search for.</param>
59+
/// <param name="ignoreNullMesh">If true it will filter our <see cref="SkinnedMeshRenderers"/> with NO mesh data.</param>
5960
/// <returns>The <see cref="SkinnedMeshRenderer" /> if found.</returns>
60-
public static SkinnedMeshRenderer GetMeshRenderer(this GameObject gameObject, MeshType meshType)
61+
public static SkinnedMeshRenderer GetMeshRenderer(this GameObject gameObject, MeshType meshType, bool ignoreNullMesh = false)
6162
{
6263
SkinnedMeshRenderer mesh;
63-
List<SkinnedMeshRenderer> children = gameObject.GetComponentsInChildren<SkinnedMeshRenderer>().ToList();
64-
64+
var children = gameObject.GetComponentsInChildren<SkinnedMeshRenderer>().ToList();
65+
if (ignoreNullMesh)
66+
{
67+
children = children.Where(renderer => renderer.sharedMesh != null).ToList();
68+
}
6569
if (children.Count == 0)
6670
{
6771

0 commit comments

Comments
 (0)