mirror of
https://github.com/AssetRipper/AssetRipper.git
synced 2025-12-11 20:15:29 +01:00
54 lines
1.8 KiB
C#
54 lines
1.8 KiB
C#
using AssetRipper.Assets;
|
|
|
|
namespace AssetRipper.Export.PrimaryContent;
|
|
|
|
public abstract class ExportCollectionBase
|
|
{
|
|
public abstract bool Contains(IUnityObjectBase asset);
|
|
public abstract bool Export(string projectDirectory, FileSystem fileSystem);
|
|
protected void ExportAsset(IUnityObjectBase asset, string path, string name, FileSystem fileSystem)
|
|
{
|
|
if (!fileSystem.Directory.Exists(path))
|
|
{
|
|
fileSystem.Directory.Create(path);
|
|
}
|
|
|
|
string fullName = $"{name}.{ExportExtension}";
|
|
string uniqueName = fileSystem.GetUniqueName(path, fullName, FileSystem.MaxFileNameLength);
|
|
string filePath = fileSystem.Path.Join(path, uniqueName);
|
|
ContentExtractor.Export(asset, filePath, fileSystem);
|
|
}
|
|
|
|
protected string GetUniqueFileName(IUnityObjectBase asset, string dirPath, FileSystem fileSystem)
|
|
{
|
|
string fileName = asset.GetBestName();
|
|
fileName = FileSystem.RemoveCloneSuffixes(fileName);
|
|
fileName = FileSystem.RemoveInstanceSuffixes(fileName);
|
|
fileName = fileName.Trim();
|
|
if (string.IsNullOrEmpty(fileName))
|
|
{
|
|
fileName = asset.ClassName;
|
|
}
|
|
else
|
|
{
|
|
fileName = FileSystem.FixInvalidFileNameCharacters(fileName);
|
|
}
|
|
|
|
fileName = $"{fileName}.{ExportExtension}";
|
|
return GetUniqueFileName(dirPath, fileName, fileSystem);
|
|
}
|
|
|
|
protected virtual string ExportExtension => "asset";
|
|
|
|
protected static string GetUniqueFileName(string directoryPath, string fileName, FileSystem fileSystem)
|
|
{
|
|
return fileSystem.GetUniqueName(directoryPath, fileName, FileSystem.MaxFileNameLength);
|
|
}
|
|
|
|
public abstract IContentExtractor ContentExtractor { get; }
|
|
public abstract IEnumerable<IUnityObjectBase> Assets { get; }
|
|
public virtual IEnumerable<IUnityObjectBase> ExportableAssets => Assets;
|
|
public virtual bool Exportable => true;
|
|
public abstract string Name { get; }
|
|
}
|