mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-25 05:40:21 -04:00
A small refactoring of l2d extractor
This commit is contained in:
parent
70aa8bec59
commit
7b1585eff0
@ -205,6 +205,7 @@ namespace CubismLive2DExtractor
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region physics3.json
|
#region physics3.json
|
||||||
|
var isPhysicsExported = false;
|
||||||
if (PhysicsMono != null)
|
if (PhysicsMono != null)
|
||||||
{
|
{
|
||||||
var physicsDict = ParseMonoBehaviour(PhysicsMono, CubismMonoBehaviourType.Physics, assemblyLoader);
|
var physicsDict = ParseMonoBehaviour(PhysicsMono, CubismMonoBehaviourType.Physics, assemblyLoader);
|
||||||
@ -214,69 +215,27 @@ namespace CubismLive2DExtractor
|
|||||||
{
|
{
|
||||||
var buff = ParsePhysics(physicsDict);
|
var buff = ParsePhysics(physicsDict);
|
||||||
File.WriteAllText($"{destPath}{modelName}.physics3.json", buff);
|
File.WriteAllText($"{destPath}{modelName}.physics3.json", buff);
|
||||||
|
isPhysicsExported = true;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Logger.Warning($"Error in parsing physics data: {e.Message}");
|
Logger.Warning($"Error in parsing physics data: {e.Message}");
|
||||||
PhysicsMono = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
PhysicsMono = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region cdi3.json
|
#region cdi3.json
|
||||||
var isCdiParsed = false;
|
var isCdiExported = false;
|
||||||
if (ParametersCdi.Count > 0 || PartsCdi.Count > 0)
|
if (ParametersCdi.Count > 0 || PartsCdi.Count > 0)
|
||||||
{
|
{
|
||||||
var cdiJson = new CubismCdi3Json
|
try
|
||||||
{
|
{
|
||||||
Version = 3,
|
isCdiExported = ExportCdiJson(destPath, modelName, assemblyLoader);
|
||||||
ParameterGroups = Array.Empty<CubismCdi3Json.ParamGroupArray>()
|
|
||||||
};
|
|
||||||
|
|
||||||
var parameters = new SortedSet<CubismCdi3Json.ParamGroupArray>();
|
|
||||||
foreach (var paramMono in ParametersCdi)
|
|
||||||
{
|
|
||||||
var displayName = GetDisplayName(paramMono, assemblyLoader);
|
|
||||||
if (displayName == null)
|
|
||||||
break;
|
|
||||||
|
|
||||||
paramMono.m_GameObject.TryGet(out var paramGameObject);
|
|
||||||
var paramId = paramGameObject.m_Name;
|
|
||||||
parameters.Add(new CubismCdi3Json.ParamGroupArray
|
|
||||||
{
|
|
||||||
Id = paramId,
|
|
||||||
GroupId = "",
|
|
||||||
Name = displayName
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
cdiJson.Parameters = parameters.ToArray();
|
catch (Exception e)
|
||||||
|
|
||||||
var parts = new SortedSet<CubismCdi3Json.PartArray>();
|
|
||||||
foreach (var partMono in PartsCdi)
|
|
||||||
{
|
{
|
||||||
var displayName = GetDisplayName(partMono, assemblyLoader);
|
Logger.Warning($"An error occurred while exporting cdi3.json\n{e}");
|
||||||
if (displayName == null)
|
|
||||||
break;
|
|
||||||
|
|
||||||
partMono.m_GameObject.TryGet(out var partGameObject);
|
|
||||||
var paramId = partGameObject.m_Name;
|
|
||||||
parts.Add(new CubismCdi3Json.PartArray
|
|
||||||
{
|
|
||||||
Id = paramId,
|
|
||||||
Name = displayName
|
|
||||||
});
|
|
||||||
}
|
|
||||||
cdiJson.Parts = parts.ToArray();
|
|
||||||
|
|
||||||
if (parts.Count > 0 || parameters.Count > 0)
|
|
||||||
{
|
|
||||||
File.WriteAllText($"{destPath}{modelName}.cdi3.json", JsonConvert.SerializeObject(cdiJson, Formatting.Indented));
|
|
||||||
isCdiParsed = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@ -431,9 +390,9 @@ namespace CubismLive2DExtractor
|
|||||||
{
|
{
|
||||||
Moc = $"{modelName}.moc3",
|
Moc = $"{modelName}.moc3",
|
||||||
Textures = textures.ToArray(),
|
Textures = textures.ToArray(),
|
||||||
Physics = PhysicsMono != null ? $"{modelName}.physics3.json" : null,
|
Physics = isPhysicsExported ? $"{modelName}.physics3.json" : null,
|
||||||
Pose = isPoseExported ? $"{modelName}.pose3.json" : null,
|
Pose = isPoseExported ? $"{modelName}.pose3.json" : null,
|
||||||
DisplayInfo = isCdiParsed ? $"{modelName}.cdi3.json" : null,
|
DisplayInfo = isCdiExported ? $"{modelName}.cdi3.json" : null,
|
||||||
Motions = JObject.FromObject(motions),
|
Motions = JObject.FromObject(motions),
|
||||||
Expressions = expressions,
|
Expressions = expressions,
|
||||||
},
|
},
|
||||||
@ -510,7 +469,7 @@ namespace CubismLive2DExtractor
|
|||||||
{
|
{
|
||||||
var posePartDict = ParseMonoBehaviour(posePartMono, CubismMonoBehaviourType.PosePart, assemblyLoader);
|
var posePartDict = ParseMonoBehaviour(posePartMono, CubismMonoBehaviourType.PosePart, assemblyLoader);
|
||||||
if (posePartDict == null)
|
if (posePartDict == null)
|
||||||
continue;
|
break;
|
||||||
|
|
||||||
if (!posePartMono.m_GameObject.TryGet(out var partObj))
|
if (!posePartMono.m_GameObject.TryGet(out var partObj))
|
||||||
continue;
|
continue;
|
||||||
@ -548,6 +507,56 @@ namespace CubismLive2DExtractor
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool ExportCdiJson(string destPath, string modelName, AssemblyLoader assemblyLoader)
|
||||||
|
{
|
||||||
|
var cdiJson = new CubismCdi3Json
|
||||||
|
{
|
||||||
|
Version = 3,
|
||||||
|
ParameterGroups = Array.Empty<CubismCdi3Json.ParamGroupArray>()
|
||||||
|
};
|
||||||
|
|
||||||
|
var parameters = new SortedSet<CubismCdi3Json.ParamGroupArray>();
|
||||||
|
foreach (var paramMono in ParametersCdi)
|
||||||
|
{
|
||||||
|
var displayName = GetDisplayName(paramMono, assemblyLoader);
|
||||||
|
if (displayName == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
paramMono.m_GameObject.TryGet(out var paramGameObject);
|
||||||
|
var paramId = paramGameObject.m_Name;
|
||||||
|
parameters.Add(new CubismCdi3Json.ParamGroupArray
|
||||||
|
{
|
||||||
|
Id = paramId,
|
||||||
|
GroupId = "",
|
||||||
|
Name = displayName
|
||||||
|
});
|
||||||
|
}
|
||||||
|
cdiJson.Parameters = parameters.ToArray();
|
||||||
|
|
||||||
|
var parts = new SortedSet<CubismCdi3Json.PartArray>();
|
||||||
|
foreach (var partMono in PartsCdi)
|
||||||
|
{
|
||||||
|
var displayName = GetDisplayName(partMono, assemblyLoader);
|
||||||
|
if (displayName == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
partMono.m_GameObject.TryGet(out var partGameObject);
|
||||||
|
var paramId = partGameObject.m_Name;
|
||||||
|
parts.Add(new CubismCdi3Json.PartArray
|
||||||
|
{
|
||||||
|
Id = paramId,
|
||||||
|
Name = displayName
|
||||||
|
});
|
||||||
|
}
|
||||||
|
cdiJson.Parts = parts.ToArray();
|
||||||
|
|
||||||
|
if (parts.Count == 0 && parameters.Count == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
File.WriteAllText($"{destPath}{modelName}.cdi3.json", JsonConvert.SerializeObject(cdiJson, Formatting.Indented));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private static string GetDisplayName(MonoBehaviour cdiMono, AssemblyLoader assemblyLoader)
|
private static string GetDisplayName(MonoBehaviour cdiMono, AssemblyLoader assemblyLoader)
|
||||||
{
|
{
|
||||||
var dict = ParseMonoBehaviour(cdiMono, CubismMonoBehaviourType.DisplayInfo, assemblyLoader);
|
var dict = ParseMonoBehaviour(cdiMono, CubismMonoBehaviourType.DisplayInfo, assemblyLoader);
|
||||||
|
Loading…
Reference in New Issue
Block a user