- [Core] handle HasMesh exception.

This commit is contained in:
Razmoth
2024-02-06 22:03:55 +04:00
parent 3d5a1bcdf2
commit 14a6115d70

View File

@@ -40,27 +40,35 @@ namespace AssetStudio
public bool HasModel() => HasMesh(m_Transform, new List<bool>()); public bool HasModel() => HasMesh(m_Transform, new List<bool>());
private static bool HasMesh(Transform m_Transform, List<bool> meshes) private static bool HasMesh(Transform m_Transform, List<bool> meshes)
{ {
m_Transform.m_GameObject.TryGet(out var m_GameObject); try
if (m_GameObject.m_MeshRenderer != null)
{ {
var mesh = GetMesh(m_GameObject.m_MeshRenderer); m_Transform.m_GameObject.TryGet(out var m_GameObject);
meshes.Add(mesh != null);
}
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); Logger.Warning($"Unable to verify if {m_Transform?.Name} has meshes, skipping...");
meshes.Add(mesh != null); 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) private static Mesh GetMesh(Renderer meshR)