mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-27 22:00:23 -04:00
Fixed #282
This commit is contained in:
parent
3cd6126ed9
commit
d380c38710
@ -256,7 +256,7 @@ namespace AssetStudio
|
||||
var iMesh = new ImportedMesh();
|
||||
meshR.m_GameObject.TryGetGameObject(out var m_GameObject2);
|
||||
m_GameObject2.m_Transform.TryGetTransform(out var meshTransform);
|
||||
iMesh.Name = GetTransformPath(meshTransform);
|
||||
iMesh.Name = GetMeshPath(meshTransform);
|
||||
iMesh.SubmeshList = new List<ImportedSubmesh>();
|
||||
var subHashSet = new HashSet<int>();
|
||||
var combine = false;
|
||||
@ -539,7 +539,7 @@ namespace AssetStudio
|
||||
if (combine)
|
||||
{
|
||||
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)
|
||||
{
|
||||
var parent = frame;
|
||||
@ -594,11 +594,10 @@ namespace AssetStudio
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private string GetTransformPath(Transform meshTransform)
|
||||
private string GetMeshPath(Transform meshTransform)
|
||||
{
|
||||
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;
|
||||
while (curFrame.Parent != null)
|
||||
{
|
||||
@ -609,6 +608,17 @@ namespace AssetStudio
|
||||
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)
|
||||
{
|
||||
ImportedMaterial iMat;
|
||||
@ -1022,7 +1032,7 @@ namespace AssetStudio
|
||||
{
|
||||
transformName = strs.Last();
|
||||
var parentFrameName = strs[strs.Length - 2];
|
||||
parentFrame = ImportedHelpers.FindFrame(parentFrameName, rootFrame);
|
||||
parentFrame = ImportedHelpers.FindChild(parentFrameName, rootFrame);
|
||||
}
|
||||
|
||||
var skeletonPose = avatar.m_Avatar.m_DefaultPose;
|
||||
|
@ -185,15 +185,27 @@ namespace AssetStudio
|
||||
{
|
||||
public static ImportedFrame FindFrame(string name, ImportedFrame root)
|
||||
{
|
||||
ImportedFrame frame = root;
|
||||
if ((frame != null) && (frame.Name == name))
|
||||
if (root.Name == name)
|
||||
{
|
||||
return frame;
|
||||
return root;
|
||||
}
|
||||
|
||||
for (int i = 0; i < root.Count; i++)
|
||||
foreach (var child in root)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user