Fix possessable path loading from cache

This commit is contained in:
Pascal Serrarens 2022-02-23 17:50:32 +01:00
parent 7ee6e7a4d3
commit 9e0911359b

View File

@ -307,7 +307,7 @@ namespace Passer {
callback(null); callback(null);
} else { } else {
Debug.Log("Load from cache: " + possessablePath); Debug.Log("Load from cache: " + possessablePath);
prefab = foundPossession.assetBundle.LoadAsset<GameObject>(possessablePath); prefab = LoadPossessableFromAssetBundle(foundPossession.assetBundle, possessablePath);
if (prefab == null) { if (prefab == null) {
Debug.LogError("Could not load " + possessablePath); Debug.LogError("Could not load " + possessablePath);
callback(null); callback(null);
@ -316,7 +316,6 @@ namespace Passer {
} }
} }
else { else {
Debug.Log("Cache size: " + cache.Count);
CachedPossession foundPossession = cache.Find(entry => entry.siteLocation == possessableLocation); CachedPossession foundPossession = cache.Find(entry => entry.siteLocation == possessableLocation);
if (foundPossession == null) { if (foundPossession == null) {
#if UNITY_ANDROID #if UNITY_ANDROID
@ -337,17 +336,10 @@ namespace Passer {
yield break; yield break;
} }
string possessableName = possessablePath; Debug.Log("Load: " + possessablePath);
int lastSlashIx = possessablePath.LastIndexOf('/'); prefab = LoadPossessableFromAssetBundle(assetBundle, possessablePath);
if (lastSlashIx >= 0)
possessableName = possessablePath.Substring(lastSlashIx + 1);
possessableName = possessableName.ToLower();
Debug.Log("Load: " + possessableName);
prefab = assetBundle.LoadAsset<GameObject>(possessableName);
if (prefab == null) { if (prefab == null) {
Debug.LogError("Could not load " + possessableName); Debug.LogError("Could not load " + possessablePath);
yield break; yield break;
} }
@ -359,7 +351,7 @@ namespace Passer {
} }
else { else {
Debug.Log("Load from cache: " + possessablePath); Debug.Log("Load from cache: " + possessablePath);
prefab = foundPossession.assetBundle.LoadAsset<GameObject>(possessablePath); prefab = LoadPossessableFromAssetBundle(foundPossession.assetBundle, possessablePath);
if (prefab == null) { if (prefab == null) {
Debug.LogError("Could not load " + possessablePath); Debug.LogError("Could not load " + possessablePath);
yield break; yield break;
@ -369,6 +361,18 @@ namespace Passer {
} }
} }
private static GameObject LoadPossessableFromAssetBundle(AssetBundle assetBundle, string possessablePath) {
string possessableName = possessablePath;
int lastSlashIx = possessablePath.LastIndexOf('/');
if (lastSlashIx >= 0)
possessableName = possessablePath.Substring(lastSlashIx + 1);
possessableName = possessableName.ToLower();
GameObject prefab = assetBundle.LoadAsset<GameObject>(possessableName);
return prefab;
}
public static void UnloadPossession() { public static void UnloadPossession() {
if (lastAssetBundle != null) if (lastAssetBundle != null)
lastAssetBundle.Unload(true); lastAssetBundle.Unload(true);