A small refactoring for Live2D motion export

This commit is contained in:
VaDiM 2025-01-23 18:04:32 +03:00
parent cc21d4fa4d
commit a8bb6c714b

View File

@ -289,54 +289,59 @@ namespace CubismLive2DExtractor
var destMotionPath = Path.Combine(destPath, "motions") + Path.DirectorySeparatorChar; var destMotionPath = Path.Combine(destPath, "motions") + Path.DirectorySeparatorChar;
var motionFps = 0f; var motionFps = 0f;
if (motionMode == Live2DMotionMode.MonoBehaviour && FadeMotionLst != null) //Fade motions from Fade Motion List if (motionMode == Live2DMotionMode.MonoBehaviour) //Fade motions from MonoBehaviour
{ {
Logger.Debug("Motion export method: MonoBehaviour (Fade motion)"); if (FadeMotionLst != null) //Fade motions from fadeMotionList
var fadeMotionLstDict = ParseMonoBehaviour(FadeMotionLst, CubismMonoBehaviourType.FadeMotionList, Assembly);
if (fadeMotionLstDict != null)
{ {
var cubismFadeList = JsonConvert.DeserializeObject<CubismFadeMotionList>(JsonConvert.SerializeObject(fadeMotionLstDict)); Logger.Debug("Parsing fade motion list..");
var fadeMotionAssetSet = new HashSet<MonoBehaviour>(); var fadeMotionLstDict = ParseMonoBehaviour(FadeMotionLst, CubismMonoBehaviourType.FadeMotionList, Assembly);
foreach (var motionPPtr in cubismFadeList.CubismFadeMotionObjects) if (fadeMotionLstDict != null)
{ {
if (motionPPtr.TryGet<MonoBehaviour>(out var fadeMono, FadeMotionLst.assetsFile)) var cubismFadeList = JsonConvert.DeserializeObject<CubismFadeMotionList>(JsonConvert.SerializeObject(fadeMotionLstDict));
var fadeMotionAssetSet = new HashSet<MonoBehaviour>();
foreach (var motionPPtr in cubismFadeList.CubismFadeMotionObjects)
{ {
fadeMotionAssetSet.Add(fadeMono); if (motionPPtr.TryGet<MonoBehaviour>(out var fadeMono, FadeMotionLst.assetsFile))
{
fadeMotionAssetSet.Add(fadeMono);
}
}
if (fadeMotionAssetSet.Count > 0)
{
FadeMotions = fadeMotionAssetSet.ToList();
Logger.Debug($"\"{FadeMotionLst.m_Name}\": found {fadeMotionAssetSet.Count} motion(s)");
} }
} }
}
if (fadeMotionAssetSet.Count > 0)
{ if (FadeMotions.Count > 0)
FadeMotions = fadeMotionAssetSet.ToList(); {
Logger.Debug($"\"{FadeMotionLst.m_Name}\": found {fadeMotionAssetSet.Count} motion(s)"); Logger.Debug("Motion export method: MonoBehaviour (Fade motion)");
} ExportFadeMotions(destMotionPath, forceBezier, motions, ref motionFps);
} }
} }
if (motionMode == Live2DMotionMode.MonoBehaviour && FadeMotions.Count > 0) //motion from MonoBehaviour
{
ExportFadeMotions(destMotionPath, forceBezier, motions, ref motionFps);
}
if (motions.Count == 0) //motion from AnimationClip if (motions.Count == 0) //motions from AnimationClip
{ {
CubismMotion3Converter converter = null; CubismMotion3Converter converter;
var exportMethod = "AnimationClip"; var exportMethod = "AnimationClip";
if (motionMode != Live2DMotionMode.AnimationClipV1) //AnimationClipV2 switch (motionMode)
{ {
exportMethod += "V2"; case Live2DMotionMode.AnimationClipV1 when Model?.ModelGameObject != null:
converter = new CubismMotion3Converter(AnimationClips, PartNames, ParameterNames); exportMethod += "V1";
} converter = new CubismMotion3Converter(Model.ModelGameObject, AnimationClips);
else if (Model?.ModelGameObject != null) //AnimationClipV1 break;
{ default: //AnimationClipV2
exportMethod += "V1"; exportMethod += "V2";
converter = new CubismMotion3Converter(Model.ModelGameObject, AnimationClips); if (motionMode == Live2DMotionMode.MonoBehaviour)
} {
exportMethod = FadeMotions.Count > 0
if (motionMode == Live2DMotionMode.MonoBehaviour) ? exportMethod + " (unable to export motions using Fade motion method)"
{ : exportMethod + " (no Fade motions found)";
exportMethod = FadeMotions.Count > 0 }
? exportMethod + " (unable to export motions using Fade motion method)" converter = new CubismMotion3Converter(AnimationClips, PartNames, ParameterNames);
: exportMethod + " (no Fade motions found)"; break;
} }
Logger.Debug($"Motion export method: {exportMethod}"); Logger.Debug($"Motion export method: {exportMethod}");