Skip to content

Commit a8bb6c7

Browse files
committed
A small refactoring for Live2D motion export
1 parent cc21d4f commit a8bb6c7

File tree

1 file changed

+41
-36
lines changed

1 file changed

+41
-36
lines changed

AssetStudioUtility/CubismLive2DExtractor/Live2DExtractor.cs

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -289,54 +289,59 @@ public void ExtractCubismModel(string destPath, Live2DMotionMode motionMode, boo
289289
var destMotionPath = Path.Combine(destPath, "motions") + Path.DirectorySeparatorChar;
290290
var motionFps = 0f;
291291

292-
if (motionMode == Live2DMotionMode.MonoBehaviour && FadeMotionLst != null) //Fade motions from Fade Motion List
292+
if (motionMode == Live2DMotionMode.MonoBehaviour) //Fade motions from MonoBehaviour
293293
{
294-
Logger.Debug("Motion export method: MonoBehaviour (Fade motion)");
295-
var fadeMotionLstDict = ParseMonoBehaviour(FadeMotionLst, CubismMonoBehaviourType.FadeMotionList, Assembly);
296-
if (fadeMotionLstDict != null)
294+
if (FadeMotionLst != null) //Fade motions from fadeMotionList
297295
{
298-
var cubismFadeList = JsonConvert.DeserializeObject<CubismFadeMotionList>(JsonConvert.SerializeObject(fadeMotionLstDict));
299-
var fadeMotionAssetSet = new HashSet<MonoBehaviour>();
300-
foreach (var motionPPtr in cubismFadeList.CubismFadeMotionObjects)
296+
Logger.Debug("Parsing fade motion list..");
297+
var fadeMotionLstDict = ParseMonoBehaviour(FadeMotionLst, CubismMonoBehaviourType.FadeMotionList, Assembly);
298+
if (fadeMotionLstDict != null)
301299
{
302-
if (motionPPtr.TryGet<MonoBehaviour>(out var fadeMono, FadeMotionLst.assetsFile))
300+
var cubismFadeList = JsonConvert.DeserializeObject<CubismFadeMotionList>(JsonConvert.SerializeObject(fadeMotionLstDict));
301+
var fadeMotionAssetSet = new HashSet<MonoBehaviour>();
302+
foreach (var motionPPtr in cubismFadeList.CubismFadeMotionObjects)
303303
{
304-
fadeMotionAssetSet.Add(fadeMono);
304+
if (motionPPtr.TryGet<MonoBehaviour>(out var fadeMono, FadeMotionLst.assetsFile))
305+
{
306+
fadeMotionAssetSet.Add(fadeMono);
307+
}
308+
}
309+
310+
if (fadeMotionAssetSet.Count > 0)
311+
{
312+
FadeMotions = fadeMotionAssetSet.ToList();
313+
Logger.Debug($"\"{FadeMotionLst.m_Name}\": found {fadeMotionAssetSet.Count} motion(s)");
305314
}
306-
}
307-
308-
if (fadeMotionAssetSet.Count > 0)
309-
{
310-
FadeMotions = fadeMotionAssetSet.ToList();
311-
Logger.Debug($"\"{FadeMotionLst.m_Name}\": found {fadeMotionAssetSet.Count} motion(s)");
312315
}
313316
}
314-
}
315-
if (motionMode == Live2DMotionMode.MonoBehaviour && FadeMotions.Count > 0) //motion from MonoBehaviour
316-
{
317-
ExportFadeMotions(destMotionPath, forceBezier, motions, ref motionFps);
318-
}
319317

320-
if (motions.Count == 0) //motion from AnimationClip
321-
{
322-
CubismMotion3Converter converter = null;
323-
var exportMethod = "AnimationClip";
324-
if (motionMode != Live2DMotionMode.AnimationClipV1) //AnimationClipV2
325-
{
326-
exportMethod += "V2";
327-
converter = new CubismMotion3Converter(AnimationClips, PartNames, ParameterNames);
328-
}
329-
else if (Model?.ModelGameObject != null) //AnimationClipV1
318+
if (FadeMotions.Count > 0)
330319
{
331-
exportMethod += "V1";
332-
converter = new CubismMotion3Converter(Model.ModelGameObject, AnimationClips);
320+
Logger.Debug("Motion export method: MonoBehaviour (Fade motion)");
321+
ExportFadeMotions(destMotionPath, forceBezier, motions, ref motionFps);
333322
}
323+
}
334324

335-
if (motionMode == Live2DMotionMode.MonoBehaviour)
325+
if (motions.Count == 0) //motions from AnimationClip
326+
{
327+
CubismMotion3Converter converter;
328+
var exportMethod = "AnimationClip";
329+
switch (motionMode)
336330
{
337-
exportMethod = FadeMotions.Count > 0
338-
? exportMethod + " (unable to export motions using Fade motion method)"
339-
: exportMethod + " (no Fade motions found)";
331+
case Live2DMotionMode.AnimationClipV1 when Model?.ModelGameObject != null:
332+
exportMethod += "V1";
333+
converter = new CubismMotion3Converter(Model.ModelGameObject, AnimationClips);
334+
break;
335+
default: //AnimationClipV2
336+
exportMethod += "V2";
337+
if (motionMode == Live2DMotionMode.MonoBehaviour)
338+
{
339+
exportMethod = FadeMotions.Count > 0
340+
? exportMethod + " (unable to export motions using Fade motion method)"
341+
: exportMethod + " (no Fade motions found)";
342+
}
343+
converter = new CubismMotion3Converter(AnimationClips, PartNames, ParameterNames);
344+
break;
340345
}
341346
Logger.Debug($"Motion export method: {exportMethod}");
342347

0 commit comments

Comments
 (0)