From 6d68f2bde5284b69b5de3fa6e1441f8e7f80a7da Mon Sep 17 00:00:00 2001 From: Perfare Date: Wed, 14 Nov 2018 16:01:52 +0800 Subject: [PATCH] Fixed --- AssetStudio/StudioClasses/ModelConverter.cs | 6 +++--- AssetStudioFBX/AssetStudioFBXExporter.cpp | 4 ++-- AssetStudioUtility/Imported.cs | 7 +++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/AssetStudio/StudioClasses/ModelConverter.cs b/AssetStudio/StudioClasses/ModelConverter.cs index 3cc7840..2ac9c28 100644 --- a/AssetStudio/StudioClasses/ModelConverter.cs +++ b/AssetStudio/StudioClasses/ModelConverter.cs @@ -538,7 +538,7 @@ namespace AssetStudio if (combine) { meshR.m_GameObject.TryGetGameObject(out var m_GameObject); - var frame = ImportedHelpers.FindChild(m_GameObject.m_Name, FrameList[0]); + var frame = ImportedHelpers.FindChildOrRoot(m_GameObject.m_Name, FrameList[0]); if (frame?.Parent != null) { var parent = frame; @@ -596,7 +596,7 @@ namespace AssetStudio private string GetMeshPath(Transform meshTransform) { meshTransform.m_GameObject.TryGetGameObject(out var m_GameObject); - var curFrame = ImportedHelpers.FindChild(m_GameObject.m_Name, FrameList[0]) ?? ImportedHelpers.FindFrame(m_GameObject.m_Name, FrameList[0]); + var curFrame = ImportedHelpers.FindChildOrRoot(m_GameObject.m_Name, FrameList[0]); var path = curFrame.Name; while (curFrame.Parent != null) { @@ -1031,7 +1031,7 @@ namespace AssetStudio { transformName = strs.Last(); var parentFrameName = strs[strs.Length - 2]; - parentFrame = ImportedHelpers.FindChild(parentFrameName, rootFrame); + parentFrame = ImportedHelpers.FindChildOrRoot(parentFrameName, rootFrame); } var skeletonPose = avatar.m_Avatar.m_DefaultPose; diff --git a/AssetStudioFBX/AssetStudioFBXExporter.cpp b/AssetStudioFBX/AssetStudioFBXExporter.cpp index 78a0120..b265291 100644 --- a/AssetStudioFBX/AssetStudioFBXExporter.cpp +++ b/AssetStudioFBX/AssetStudioFBXExporter.cpp @@ -230,7 +230,7 @@ namespace AssetStudio { if (!exportFrames->Contains(boneList[i]->Name)) { - ImportedFrame^ boneParent = ImportedHelpers::FindFrame(boneList[i]->Name, imported->FrameList[0]); + ImportedFrame^ boneParent = ImportedHelpers::FindChildOrRoot(boneList[i]->Name, imported->FrameList[0]); while (boneParent != nullptr) { exportFrames->Add(boneParent->Name); @@ -754,7 +754,7 @@ namespace AssetStudio ImportedAnimationKeyframedTrack^ keyframeList = pAnimationList[j]; String^ name = keyframeList->Name; int dotPos = name->IndexOf('.'); - if (dotPos >= 0 && !ImportedHelpers::FindFrame(name, imported->FrameList[0])) + if (dotPos >= 0 && !ImportedHelpers::FindChildOrRoot(name, imported->FrameList[0])) { name = name->Substring(0, dotPos); } diff --git a/AssetStudioUtility/Imported.cs b/AssetStudioUtility/Imported.cs index 298ee8d..a00a012 100644 --- a/AssetStudioUtility/Imported.cs +++ b/AssetStudioUtility/Imported.cs @@ -200,7 +200,7 @@ namespace AssetStudio return null; } - public static ImportedFrame FindChild(string name, ImportedFrame root) + public static ImportedFrame FindChildOrRoot(string name, ImportedFrame root) { foreach (var child in root) { @@ -210,7 +210,10 @@ namespace AssetStudio return frame; } } - + if (root.Name == name) + { + return root; + } return null; }