Fix default avatar loading error
This commit is contained in:
parent
145bb2e8bf
commit
94690b38e1
@ -52,6 +52,7 @@ namespace Passer {
|
|||||||
public CachedPossessionBundle possessionBundle;
|
public CachedPossessionBundle possessionBundle;
|
||||||
public string assetPath;
|
public string assetPath;
|
||||||
public GameObject possession;
|
public GameObject possession;
|
||||||
|
public bool preserved = false; // when the possession was a scenePossession which is preseved
|
||||||
|
|
||||||
public static void Update(CachedPossessionBundle cachedBundle, string possessablePath, GameObject prefab) {
|
public static void Update(CachedPossessionBundle cachedBundle, string possessablePath, GameObject prefab) {
|
||||||
CachedPossession foundPossession = cache.Find(entry =>
|
CachedPossession foundPossession = cache.Find(entry =>
|
||||||
@ -184,8 +185,8 @@ namespace Passer {
|
|||||||
if (possession == null)
|
if (possession == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Possession persistentPossession = Add(possession);
|
Possession persistentPossession = Add(possession, true);
|
||||||
persistentPossession.scenePossession = PreservePossession(possession);
|
//persistentPossession.scenePossession = PreservePossession(possession);
|
||||||
persistentPossession.persistent = possession.crossSite;
|
persistentPossession.persistent = possession.crossSite;
|
||||||
persistentPossession.removable = removable;
|
persistentPossession.removable = removable;
|
||||||
}
|
}
|
||||||
@ -205,7 +206,7 @@ namespace Passer {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="possessable">The possessable object to add</param>
|
/// <param name="possessable">The possessable object to add</param>
|
||||||
/// <returns>The persistent possession</returns>
|
/// <returns>The persistent possession</returns>
|
||||||
public Possession Add(Possessable possessable) {
|
public Possession Add(Possessable possessable, bool preserved = false) {
|
||||||
if (possessable == null)
|
if (possessable == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
@ -223,6 +224,8 @@ namespace Passer {
|
|||||||
assetPath = possessable.assetPath,
|
assetPath = possessable.assetPath,
|
||||||
type = possessable.possessionType,
|
type = possessable.possessionType,
|
||||||
};
|
};
|
||||||
|
if (preserved)
|
||||||
|
newPossession.scenePossession = PreservePossession(possessable);
|
||||||
|
|
||||||
possessions.Add(newPossession);
|
possessions.Add(newPossession);
|
||||||
|
|
||||||
@ -231,18 +234,19 @@ namespace Passer {
|
|||||||
CachedPossession cachedPossession = new CachedPossession() {
|
CachedPossession cachedPossession = new CachedPossession() {
|
||||||
assetPath = possessable.assetPath,
|
assetPath = possessable.assetPath,
|
||||||
possessionBundle = possessionBundle,
|
possessionBundle = possessionBundle,
|
||||||
possession = possessable.gameObject,
|
possession = preserved ? newPossession.scenePossession.gameObject : possessable.gameObject,
|
||||||
|
preserved = preserved,
|
||||||
};
|
};
|
||||||
cache.Add(cachedPossession);
|
cache.Add(cachedPossession);
|
||||||
|
|
||||||
//Debug.Log("Possession cache: ");
|
Debug.Log("Possession cache: ");
|
||||||
//foreach (CachedPossession poss in cache)
|
foreach (CachedPossession poss in cache)
|
||||||
// Debug.Log(" * " + poss.assetPath + " || " + poss.possessionBundle + " || " + poss.possession);
|
Debug.Log(" * " + poss.assetPath + " || " + poss.possessionBundle + " || " + poss.possession + " || " + poss.preserved);
|
||||||
|
|
||||||
//Debug.Log("cache: ");
|
Debug.Log("cache: ");
|
||||||
//foreach (CachedPossessionBundle pos in bundleCache) {
|
foreach (CachedPossessionBundle pos in bundleCache) {
|
||||||
// Debug.Log(" - " + pos.siteLocation + " || " + pos.assetBundle);
|
Debug.Log(" - " + pos.siteLocation + " || " + pos.assetBundle);
|
||||||
//}
|
}
|
||||||
|
|
||||||
return newPossession;
|
return newPossession;
|
||||||
}
|
}
|
||||||
@ -262,14 +266,14 @@ namespace Passer {
|
|||||||
private static AssetBundle lastAssetBundle;
|
private static AssetBundle lastAssetBundle;
|
||||||
|
|
||||||
public static IEnumerator RetrievePossessionAsync(Possession possession, System.Action<GameObject> callback) {
|
public static IEnumerator RetrievePossessionAsync(Possession possession, System.Action<GameObject> callback) {
|
||||||
//Debug.Log("Possession cache: ");
|
Debug.Log("Possession cache: ");
|
||||||
//foreach (CachedPossession poss in cache)
|
foreach (CachedPossession poss in cache)
|
||||||
// Debug.Log(" * " + poss.assetPath + " || " + poss.possessionBundle + " || " + poss.possession);
|
Debug.Log(" * " + poss.assetPath + " || " + poss.possessionBundle + " || " + poss.possession + " || " + poss.preserved);
|
||||||
|
|
||||||
//Debug.Log("cache: ");
|
Debug.Log("cache: ");
|
||||||
//foreach (CachedPossessionBundle pos in bundleCache) {
|
foreach (CachedPossessionBundle pos in bundleCache) {
|
||||||
// Debug.Log(" - " + pos.siteLocation + " || " + pos.assetBundle);
|
Debug.Log(" - " + pos.siteLocation + " || " + pos.assetBundle);
|
||||||
//}
|
}
|
||||||
|
|
||||||
if (possession.siteLocation == "") {
|
if (possession.siteLocation == "") {
|
||||||
Debug.Log("Get scene possession");
|
Debug.Log("Get scene possession");
|
||||||
@ -293,7 +297,7 @@ namespace Passer {
|
|||||||
callback(null);
|
callback(null);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Debug.Log("Load from cache: " + possessablePath);
|
//Debug.Log("Load from cache: " + possessablePath);
|
||||||
prefab = foundPossession.possession;
|
prefab = foundPossession.possession;
|
||||||
if (prefab == null) {
|
if (prefab == null) {
|
||||||
Debug.LogError("Could not load " + possessablePath);
|
Debug.LogError("Could not load " + possessablePath);
|
||||||
@ -308,8 +312,15 @@ namespace Passer {
|
|||||||
if (foundPossession != null && foundPossession.possession != null) {
|
if (foundPossession != null && foundPossession.possession != null) {
|
||||||
//Debug.Log("Load from cache: " + foundPossession.possession);
|
//Debug.Log("Load from cache: " + foundPossession.possession);
|
||||||
prefab = foundPossession.possession;
|
prefab = foundPossession.possession;
|
||||||
callback(prefab);
|
if (foundPossession.preserved) {
|
||||||
yield return null;
|
//Debug.Log("preserved possession");
|
||||||
|
prefab.SetActive(true);
|
||||||
|
callback(prefab);
|
||||||
|
prefab.SetActive(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
callback(prefab);
|
||||||
|
yield break;
|
||||||
}
|
}
|
||||||
|
|
||||||
CachedPossessionBundle foundPossessionBundle = bundleCache.Find(entry => entry.siteLocation == possessableLocation);
|
CachedPossessionBundle foundPossessionBundle = bundleCache.Find(entry => entry.siteLocation == possessableLocation);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user