From 14a6115d70f62043d7959214cbc98e68b7b41563 Mon Sep 17 00:00:00 2001 From: Razmoth <32140579+Razmoth@users.noreply.github.com> Date: Tue, 6 Feb 2024 22:03:55 +0400 Subject: [PATCH] - [Core] handle `HasMesh` exception. --- AssetStudio/Classes/GameObject.cs | 42 ++++++++++++++++++------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/AssetStudio/Classes/GameObject.cs b/AssetStudio/Classes/GameObject.cs index 18903b3..4ff12e7 100644 --- a/AssetStudio/Classes/GameObject.cs +++ b/AssetStudio/Classes/GameObject.cs @@ -40,27 +40,35 @@ namespace AssetStudio public bool HasModel() => HasMesh(m_Transform, new List()); private static bool HasMesh(Transform m_Transform, List meshes) { - m_Transform.m_GameObject.TryGet(out var m_GameObject); - - if (m_GameObject.m_MeshRenderer != null) + try { - var mesh = GetMesh(m_GameObject.m_MeshRenderer); - meshes.Add(mesh != null); - } + m_Transform.m_GameObject.TryGet(out var m_GameObject); - if (m_GameObject.m_SkinnedMeshRenderer != null) + if (m_GameObject.m_MeshRenderer != null) + { + var mesh = GetMesh(m_GameObject.m_MeshRenderer); + meshes.Add(mesh != null); + } + + if (m_GameObject.m_SkinnedMeshRenderer != null) + { + var mesh = GetMesh(m_GameObject.m_SkinnedMeshRenderer); + meshes.Add(mesh != null); + } + + foreach (var pptr in m_Transform.m_Children) + { + if (pptr.TryGet(out var child)) + meshes.Add(HasMesh(child, meshes)); + } + + return meshes.Any(x => x == true); + } + catch(Exception e) { - var mesh = GetMesh(m_GameObject.m_SkinnedMeshRenderer); - meshes.Add(mesh != null); + Logger.Warning($"Unable to verify if {m_Transform?.Name} has meshes, skipping..."); + return false; } - - foreach (var pptr in m_Transform.m_Children) - { - if (pptr.TryGet(out var child)) - meshes.Add(HasMesh(child, meshes)); - } - - return meshes.Any(x => x == true); } private static Mesh GetMesh(Renderer meshR)