Fixed #282
This commit is contained in:
parent
3cd6126ed9
commit
d380c38710
|
@ -256,7 +256,7 @@ namespace AssetStudio
|
||||||
var iMesh = new ImportedMesh();
|
var iMesh = new ImportedMesh();
|
||||||
meshR.m_GameObject.TryGetGameObject(out var m_GameObject2);
|
meshR.m_GameObject.TryGetGameObject(out var m_GameObject2);
|
||||||
m_GameObject2.m_Transform.TryGetTransform(out var meshTransform);
|
m_GameObject2.m_Transform.TryGetTransform(out var meshTransform);
|
||||||
iMesh.Name = GetTransformPath(meshTransform);
|
iMesh.Name = GetMeshPath(meshTransform);
|
||||||
iMesh.SubmeshList = new List<ImportedSubmesh>();
|
iMesh.SubmeshList = new List<ImportedSubmesh>();
|
||||||
var subHashSet = new HashSet<int>();
|
var subHashSet = new HashSet<int>();
|
||||||
var combine = false;
|
var combine = false;
|
||||||
|
@ -539,7 +539,7 @@ namespace AssetStudio
|
||||||
if (combine)
|
if (combine)
|
||||||
{
|
{
|
||||||
meshR.m_GameObject.TryGetGameObject(out var m_GameObject);
|
meshR.m_GameObject.TryGetGameObject(out var m_GameObject);
|
||||||
var frame = ImportedHelpers.FindFrame(m_GameObject.m_Name, FrameList[0]);
|
var frame = ImportedHelpers.FindChild(m_GameObject.m_Name, FrameList[0]);
|
||||||
if (frame?.Parent != null)
|
if (frame?.Parent != null)
|
||||||
{
|
{
|
||||||
var parent = frame;
|
var parent = frame;
|
||||||
|
@ -594,11 +594,10 @@ namespace AssetStudio
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetMeshPath(Transform meshTransform)
|
||||||
private string GetTransformPath(Transform meshTransform)
|
|
||||||
{
|
{
|
||||||
meshTransform.m_GameObject.TryGetGameObject(out var m_GameObject);
|
meshTransform.m_GameObject.TryGetGameObject(out var m_GameObject);
|
||||||
var curFrame = ImportedHelpers.FindFrame(m_GameObject.m_Name, FrameList[0]);
|
var curFrame = ImportedHelpers.FindChild(m_GameObject.m_Name, FrameList[0]);
|
||||||
var path = curFrame.Name;
|
var path = curFrame.Name;
|
||||||
while (curFrame.Parent != null)
|
while (curFrame.Parent != null)
|
||||||
{
|
{
|
||||||
|
@ -609,6 +608,17 @@ namespace AssetStudio
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetTransformPath(Transform transform)
|
||||||
|
{
|
||||||
|
transform.m_GameObject.TryGetGameObject(out var m_GameObject);
|
||||||
|
if (transform.m_Father.TryGetTransform(out var father))
|
||||||
|
{
|
||||||
|
return GetTransformPath(father) + "/" + m_GameObject.m_Name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_GameObject.m_Name;
|
||||||
|
}
|
||||||
|
|
||||||
private ImportedMaterial ConvertMaterial(Material mat)
|
private ImportedMaterial ConvertMaterial(Material mat)
|
||||||
{
|
{
|
||||||
ImportedMaterial iMat;
|
ImportedMaterial iMat;
|
||||||
|
@ -1022,7 +1032,7 @@ namespace AssetStudio
|
||||||
{
|
{
|
||||||
transformName = strs.Last();
|
transformName = strs.Last();
|
||||||
var parentFrameName = strs[strs.Length - 2];
|
var parentFrameName = strs[strs.Length - 2];
|
||||||
parentFrame = ImportedHelpers.FindFrame(parentFrameName, rootFrame);
|
parentFrame = ImportedHelpers.FindChild(parentFrameName, rootFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
var skeletonPose = avatar.m_Avatar.m_DefaultPose;
|
var skeletonPose = avatar.m_Avatar.m_DefaultPose;
|
||||||
|
|
|
@ -185,15 +185,27 @@ namespace AssetStudio
|
||||||
{
|
{
|
||||||
public static ImportedFrame FindFrame(string name, ImportedFrame root)
|
public static ImportedFrame FindFrame(string name, ImportedFrame root)
|
||||||
{
|
{
|
||||||
ImportedFrame frame = root;
|
if (root.Name == name)
|
||||||
if ((frame != null) && (frame.Name == name))
|
|
||||||
{
|
{
|
||||||
return frame;
|
return root;
|
||||||
}
|
}
|
||||||
|
foreach (var child in root)
|
||||||
for (int i = 0; i < root.Count; i++)
|
|
||||||
{
|
{
|
||||||
if ((frame = FindFrame(name, root[i])) != null)
|
var frame = FindFrame(name, child);
|
||||||
|
if (frame != null)
|
||||||
|
{
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImportedFrame FindChild(string name, ImportedFrame root)
|
||||||
|
{
|
||||||
|
foreach (var child in root)
|
||||||
|
{
|
||||||
|
var frame = FindFrame(name, child);
|
||||||
|
if (frame != null)
|
||||||
{
|
{
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue