Skip to content

Commit 0d380c9

Browse files
committed
Removed looking for metadata on all objects b/c it's ridiculously slow. Only works on Materials for now
1 parent d1201cd commit 0d380c9

File tree

3 files changed

+17
-18
lines changed

3 files changed

+17
-18
lines changed

Editor/Build/MetadataLookupBuild.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@ public class MetadataLookupPreprocessBuild : IPreprocessBuildWithReport
1313
{
1414
public int callbackOrder { get { return 0; } }
1515

16-
public static List<(string,Metadata)> GetAllMetadata<Asset,Metadata>()
17-
where Asset : UnityEngine.Object
18-
where Metadata : CustomAssetMetadata
16+
public static List<(string, CustomAssetMetadata)> GetAllMetadata<Asset>()
17+
where Asset : UnityEngine.Object
1918
{
2019
// TODO: figure out if there's a more efficient way of doing this??
2120
var guids = AssetDatabase.FindAssets($"t:{typeof(Asset).Name}");
22-
var result = new List<(string, Metadata)>();
21+
var result = new List<(string, CustomAssetMetadata)>();
2322
for (int i = 0; i < guids.Length; i++)
2423
{
2524
var assetPath = AssetDatabase.GUIDToAssetPath(guids[i]);
@@ -30,10 +29,10 @@ public class MetadataLookupPreprocessBuild : IPreprocessBuildWithReport
3029
int index = 0;
3130
foreach (var item in AssetDatabase.LoadAllAssetsAtPath(assetPath))
3231
{
33-
if (item is Metadata t && t.asset is Asset)
32+
if (item is CustomAssetMetadata metadata && metadata.asset is Asset)
3433
{
3534
var name = $"{guids[i]}-{index}";
36-
result.Add((name, t));
35+
result.Add((name, metadata));
3736
index++;
3837
}
3938
}
@@ -54,7 +53,7 @@ public void OnPreprocessBuild(BuildReport report)
5453
var list = ScriptableObject.CreateInstance<MetadataLookupAsset>();
5554
var allMetadata = new List<CustomAssetMetadata>();
5655
// TODO: use addressables (if available?) instead to avoid loading every asset into memory
57-
foreach (var (name,metadata) in GetAllMetadata<UnityEngine.Object, CustomAssetMetadata>())
56+
foreach (var (name, metadata) in GetAllMetadata<Material>()) // TODO: figure out a way to efficiently support more types
5857
{
5958
var clone = UnityEngine.Object.Instantiate(metadata);
6059
AssetDatabase.CreateAsset(clone, $"{basePath}/{name}.asset");

Runtime/Common/MetadataLookup.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ public static Metadata GetMetadataOfType<Metadata>(UnityEngine.Object asset)
6565

6666
internal static void Register(UnityEngine.Object asset, CustomAssetMetadata metadata)
6767
{
68+
if (object.ReferenceEquals(asset, null) ||
69+
object.ReferenceEquals(metadata, null))
70+
return;
71+
6872
if (!table.TryGetValue(asset, out var metadataList))
6973
{
7074
metadataList = new List<CustomAssetMetadata>();
@@ -77,6 +81,10 @@ internal static void Register(UnityEngine.Object asset, CustomAssetMetadata meta
7781

7882
internal static void Unregister(UnityEngine.Object asset, CustomAssetMetadata metadata)
7983
{
84+
if (object.ReferenceEquals(asset, null) ||
85+
object.ReferenceEquals(metadata, null))
86+
return;
87+
8088
if (!table.TryGetValue(asset, out var metadataList))
8189
return;
8290

@@ -114,9 +122,9 @@ static IReadOnlyList<CustomAssetMetadata> GetAllMetadata<Asset>()
114122
var lookupAsset = Resources.Load($"{kResourcePath}/{kAssetName}") as MetadataLookupAsset;
115123
foreach(var item in lookupAsset.allMetadata)
116124
{
117-
if (item is CustomAssetMetadata t && t.asset is T1)
125+
if (item is CustomAssetMetadata metadata && metadata.asset is Asset)
118126
{
119-
result.Add(t);
127+
result.Add(metadata);
120128
}
121129
}
122130
#endif
@@ -131,7 +139,7 @@ static void Init()
131139
return;
132140

133141
// TODO: use addressables (if available?) instead to avoid loading every asset into memory
134-
foreach (var metadata in GetAllMetadata<UnityEngine.Object>())
142+
foreach (var metadata in GetAllMetadata<Material>()) // TODO: figure out a way to efficiently support more types
135143
MetadataLookup.Register(metadata.asset, metadata);
136144

137145
initialized = true;

Tests.meta

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)