- [Core] handle HasMesh exception.
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user