Fix issue with SpriteInformationObject being generated for engine assets

This commit is contained in:
ds5678 2024-04-20 20:53:01 -07:00
parent 5a81c48c2a
commit 1c9036fcb5
4 changed files with 15 additions and 11 deletions

View File

@ -143,12 +143,6 @@ public class EngineAssetsExporter : IAssetExporter
guid = PredefinedAssetCache.FGUID;
return true;
}
else if (FilenameUtils.IsEngineGeneratedF(fileName))
{
//Not sure this is correct
guid = PredefinedAssetCache.FGUID;
return true;
}
guid = default;
return false;
}

View File

@ -22,6 +22,11 @@ namespace AssetRipper.IO.Files.Utils
return fileName is BuiltinExtraName1 or BuiltinExtraName2;
}
public static bool IsDefaultResourceOrBuiltinExtra(string? fileName)
{
return IsDefaultResource(fileName) || IsBuiltinExtra(fileName);
}
public static bool IsEngineGeneratedF(string? fileName)
{
return fileName is EngineGeneratedF;

View File

@ -4,6 +4,7 @@ using AssetRipper.Assets.Collections;
using AssetRipper.Assets.Metadata;
using AssetRipper.IO.Files;
using AssetRipper.IO.Files.SerializedFiles;
using AssetRipper.IO.Files.Utils;
using AssetRipper.Mining.PredefinedAssets;
using AssetRipper.SourceGenerated;
using AssetRipper.Tpk;
@ -47,8 +48,8 @@ internal sealed partial record class GameInitializer
public static void InjectEngineFilesIfNecessary(GameBundle gameBundle, UnityVersion targetVersion)
{
bool injectDefaultResources = gameBundle.ResolveCollection("unity default resources") is null;
bool injectExtraResources = gameBundle.ResolveCollection("unity builtin extra") is null;
bool injectDefaultResources = gameBundle.ResolveCollection(FilenameUtils.DefaultResourceName1) is null;
bool injectExtraResources = gameBundle.ResolveCollection(FilenameUtils.BuiltinExtraName2) is null;
if (!injectDefaultResources && !injectExtraResources)
{
return;
@ -65,12 +66,12 @@ internal sealed partial record class GameInitializer
EngineResourceData data = GetData(targetVersion);
if (injectDefaultResources)
{
InjectedEngineCollection collection = new("unity default resources", targetVersion, bundle);
InjectedEngineCollection collection = new(FilenameUtils.DefaultResourceName1, targetVersion, bundle);
collection.AddAssets(data.DefaultResources);
}
if (injectExtraResources)
{
InjectedEngineCollection collection = new("unity builtin extra", targetVersion, bundle);
InjectedEngineCollection collection = new(FilenameUtils.BuiltinExtraName2, targetVersion, bundle);
collection.AddAssets(data.ExtraResources);
}
}

View File

@ -2,6 +2,7 @@
using AssetRipper.Assets.Bundles;
using AssetRipper.Assets.Cloning;
using AssetRipper.Assets.Metadata;
using AssetRipper.IO.Files.Utils;
using AssetRipper.SourceGenerated.Classes.ClassID_213;
using AssetRipper.SourceGenerated.Classes.ClassID_28;
using AssetRipper.SourceGenerated.Classes.ClassID_687078895;
@ -19,7 +20,10 @@ namespace AssetRipper.Processing.Textures
public void Process(GameData gameData)
{
ObjectFactory factory = new ObjectFactory(gameData);
foreach (IUnityObjectBase asset in gameData.GameBundle.FetchAssets())
foreach (IUnityObjectBase asset in gameData.GameBundle
.FetchAssetCollections()
.Where(c => !FilenameUtils.IsDefaultResourceOrBuiltinExtra(c.Name))
.SelectMany(c => c))
{
if (asset is ITexture2D texture)
{