mirror of
https://github.com/aelurum/AssetStudio.git
synced 2026-11-14 11:18:47 -05:00
Merge branch 'pr/113' into AssetStudioMod
This commit is contained in:
@@ -119,6 +119,7 @@ namespace AssetStudioCLI.Options
|
||||
public static Option<List<string>> o_filterByPathID;
|
||||
public static Option<List<string>> o_filterByText;
|
||||
public static Option<bool> f_filterWithRegex;
|
||||
public static Option<bool> f_filterExcludeMode;
|
||||
//import
|
||||
public static Option<UnityVersion> o_unityVersion;
|
||||
public static Option<string> o_cachePath;
|
||||
@@ -129,6 +130,7 @@ namespace AssetStudioCLI.Options
|
||||
public static Option<int> o_maxParallelExportTasks;
|
||||
public static Option<ExportListType> o_exportAssetList;
|
||||
public static Option<string> o_assemblyPath;
|
||||
public static Option<string> o_stripPathPrefix;
|
||||
public static Option<bool> f_notRestoreExtensionName;
|
||||
public static Option<bool> f_avoidLoadingViaTypetree;
|
||||
public static Option<bool> f_rawByteArrayFromMono;
|
||||
@@ -459,7 +461,17 @@ namespace AssetStudioCLI.Options
|
||||
optionDefaultValue: false,
|
||||
optionName: "--filter-with-regex",
|
||||
optionDescription: "(Flag) If specified, the filter options will handle the specified text\n" +
|
||||
"as a regular expression (doesn't apply to --filter-by-pathid)",
|
||||
"as a regular expression (doesn't apply to --filter-by-pathid)\n",
|
||||
optionExample: "",
|
||||
optionHelpGroup: HelpGroups.Filter,
|
||||
isFlag: true
|
||||
);
|
||||
f_filterExcludeMode = new GroupedOption<bool>
|
||||
(
|
||||
optionDefaultValue: false,
|
||||
optionName: "--filter-exclude-mode",
|
||||
optionDescription: "(Flag) If specified, the filter options will work as an exclusion\n" +
|
||||
"(i.e. assets that match the filter conditions will be excluded)",
|
||||
optionExample: "",
|
||||
optionHelpGroup: HelpGroups.Filter,
|
||||
isFlag: true
|
||||
@@ -551,6 +563,14 @@ namespace AssetStudioCLI.Options
|
||||
optionExample: "",
|
||||
optionHelpGroup: HelpGroups.Advanced
|
||||
);
|
||||
o_stripPathPrefix = new GroupedOption<string>
|
||||
(
|
||||
optionDefaultValue: "",
|
||||
optionName: "--strip-path-prefix <path>",
|
||||
optionDescription: "Specify a path prefix to be stripped from exported asset paths\n",
|
||||
optionExample: "Example: \"--strip-path-prefix assets/models/char/\"\n",
|
||||
optionHelpGroup: HelpGroups.Advanced
|
||||
);
|
||||
f_notRestoreExtensionName = new GroupedOption<bool>
|
||||
(
|
||||
optionDefaultValue: false,
|
||||
@@ -750,6 +770,10 @@ namespace AssetStudioCLI.Options
|
||||
f_filterWithRegex.Value = true;
|
||||
flagIndexes.Add(i);
|
||||
break;
|
||||
case "--filter-exclude-mode":
|
||||
f_filterExcludeMode.Value = true;
|
||||
flagIndexes.Add(i);
|
||||
break;
|
||||
case "--decompress-to-disk":
|
||||
f_decompressToDisk.Value = true;
|
||||
flagIndexes.Add(i);
|
||||
@@ -1241,6 +1265,13 @@ namespace AssetStudioCLI.Options
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case "--strip-path-prefix":
|
||||
o_stripPathPrefix.Value = Path.Combine(Path.GetDirectoryName(value), Path.GetFileName(value));
|
||||
if (!o_stripPathPrefix.Value.EndsWith(Path.DirectorySeparatorChar.ToString()))
|
||||
{
|
||||
o_stripPathPrefix.Value += Path.DirectorySeparatorChar;
|
||||
}
|
||||
break;
|
||||
case "--unity-version":
|
||||
try
|
||||
{
|
||||
@@ -1494,12 +1525,14 @@ namespace AssetStudioCLI.Options
|
||||
}
|
||||
sb.AppendLine(ShowCurrentFilter());
|
||||
sb.AppendLine($"# Filter With Regex: {f_filterWithRegex}");
|
||||
sb.AppendLine($"# Filter Exclusion Mode: {f_filterExcludeMode}");
|
||||
sb.AppendLine($"# Assembly Path: \"{o_assemblyPath}\"");
|
||||
break;
|
||||
case WorkMode.Live2D:
|
||||
sb.AppendLine($"# [{o_workMode} Options]");
|
||||
sb.AppendLine($"# Filter by Text: \"{string.Join("\", \"", o_filterByText.Value)}\"");
|
||||
sb.AppendLine($"# Filter With Regex: {f_filterWithRegex}");
|
||||
sb.AppendLine($"# Filter Exclusion Mode: {f_filterExcludeMode}");
|
||||
sb.AppendLine($"# Model Group Option: {o_l2dGroupOption}");
|
||||
sb.AppendFormat("# Search Model-related Assets by: {0}\n", f_l2dAssetSearchByFilename.Value ? "FileName" : "Container");
|
||||
sb.AppendLine($"# Motion Export Method: {o_l2dMotionMode}");
|
||||
@@ -1513,6 +1546,7 @@ namespace AssetStudioCLI.Options
|
||||
? ShowCurrentFilter()
|
||||
: $"# Filter by Name(s): \"{string.Join("\", \"", o_filterByName.Value)}\"");
|
||||
sb.AppendLine($"# Filter With Regex: {f_filterWithRegex}");
|
||||
sb.AppendLine($"# Filter Exclusion Mode: {f_filterExcludeMode}");
|
||||
sb.AppendLine($"# Export Image Format: {o_imageFormat}");
|
||||
sb.AppendLine($"# FBX Scale Factor: {o_fbxScaleFactor}");
|
||||
sb.AppendLine($"# FBX Bone Size: {o_fbxBoneSize}");
|
||||
|
||||
@@ -152,6 +152,9 @@ Filter Options:
|
||||
--filter-with-regex (Flag) If specified, the filter options will handle the specified text
|
||||
as a regular expression (doesn't apply to --filter-by-pathid)
|
||||
|
||||
--filter-exclude-mode (Flag) If specified, the filter options will work as an exclusion
|
||||
(i.e. assets that match the filter conditions will be excluded)
|
||||
|
||||
Advanced Options:
|
||||
--blockinfo-comp <value> Specify the compression type of bundle's blockInfo data
|
||||
<Value: auto(default) | zstd | oodle | lz4 | lzma>
|
||||
@@ -183,6 +186,9 @@ Advanced Options:
|
||||
|
||||
--assembly-folder <path> Specify the path to the assembly folder
|
||||
|
||||
--strip-path-prefix <path> Specify a path prefix to be stripped from exported asset paths
|
||||
Example: "--strip-path-prefix assets/models/char/"
|
||||
|
||||
--unity-version <text> Specify Unity version
|
||||
Example: "--unity-version 2017.4.39f1"
|
||||
|
||||
|
||||
@@ -627,6 +627,14 @@ namespace AssetStudioCLI
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
if (CLIOptions.f_filterExcludeMode.Value)
|
||||
{
|
||||
var excludeCount = assetsCount - filteredAssets.Count;
|
||||
Logger.Info($"Excluding {excludeCount} asset(s) that match the filter.");
|
||||
filteredAssets = parsedAssetsList.Except(filteredAssets).ToList();
|
||||
}
|
||||
|
||||
parsedAssetsList.Clear();
|
||||
parsedAssetsList = filteredAssets;
|
||||
}
|
||||
@@ -641,6 +649,31 @@ namespace AssetStudioCLI
|
||||
var parallelExportCount = CLIOptions.o_maxParallelExportTasks.Value;
|
||||
var toExportAssetDict = new ConcurrentDictionary<AssetItem, string>();
|
||||
var toParallelExportAssetDict = new ConcurrentDictionary<AssetItem, string>();
|
||||
|
||||
if (CLIOptions.o_stripPathPrefix.Value != null)
|
||||
{
|
||||
foreach (var asset in parsedAssetsList)
|
||||
{
|
||||
var containerPath = asset.Container;
|
||||
if (string.IsNullOrEmpty(containerPath))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!Path.Combine(Path.GetDirectoryName(containerPath), Path.GetFileName(containerPath)).StartsWith(CLIOptions.o_stripPathPrefix.Value))
|
||||
{
|
||||
Logger.Warning($"Asset container path \"{asset.Container}\" does not start with the specified path prefix \"{CLIOptions.o_stripPathPrefix.Value}\"");
|
||||
Logger.Warning("strip path prefix option will be ignored.");
|
||||
CLIOptions.o_stripPathPrefix.Value = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (CLIOptions.o_stripPathPrefix.Value != null)
|
||||
{
|
||||
Logger.Info($"Asset container path prefix \"{CLIOptions.o_stripPathPrefix.Value}\" will be stripped off.");
|
||||
}
|
||||
|
||||
Parallel.ForEach(parsedAssetsList, asset =>
|
||||
{
|
||||
string exportPath;
|
||||
@@ -653,7 +686,12 @@ namespace AssetStudioCLI
|
||||
case AssetGroupOption.ContainerPathFull:
|
||||
if (!string.IsNullOrEmpty(asset.Container))
|
||||
{
|
||||
exportPath = Path.Combine(savePath, Path.GetDirectoryName(asset.Container));
|
||||
var containerPath = Path.GetDirectoryName(asset.Container);
|
||||
if (CLIOptions.o_stripPathPrefix.Value != null)
|
||||
{
|
||||
containerPath = containerPath.Substring(CLIOptions.o_stripPathPrefix.Value.Length);
|
||||
}
|
||||
exportPath = Path.Combine(savePath, containerPath);
|
||||
if (groupOption == AssetGroupOption.ContainerPathFull)
|
||||
{
|
||||
exportPath = Path.Combine(exportPath, Path.GetFileNameWithoutExtension(asset.Container));
|
||||
@@ -722,7 +760,6 @@ namespace AssetStudioCLI
|
||||
toExportAssetDict.TryAdd(asset, exportPath);
|
||||
}
|
||||
});
|
||||
|
||||
foreach (var toExportAsset in toExportAssetDict)
|
||||
{
|
||||
var asset = toExportAsset.Key;
|
||||
|
||||
Reference in New Issue
Block a user