private void OnDisable() { if (lightingRig != null) { IconRenderLightingRig.Release(); } }
private IEnumerator acquireLightingRig() { lightingRig = IconRenderLightingRig.Acquire(); while (!lightingRig.IsReady) { yield return(null); } }
private IEnumerator setupAndProcessRequests() { yield return(acquireLightingRig()); yield return(processPendingRequests()); IconRenderLightingRig.Release(); lightingRig = null; }
public static void Release() { if (--refCount <= 0 && instance != null) { instance.cancelLoading = true; instance.destroy(); instance = null; } }
public static IconRenderLightingRig Acquire() { if (instance == null || instance.lightingRig == null) { instance = new IconRenderLightingRig(); } instance.cancelLoading = false; refCount++; return(instance); }
private IEnumerator loadRenderGameObjects(DCustomEquipment[] outfit, Color bodyColor, AvatarAnimationFrame avatarFrame, RenderRequest renderRequest) { if (avatarPrefab == null && isLoadingAvatarPrefab) { yield return(null); } if (avatarPrefab == null) { isLoadingAvatarPrefab = true; AssetRequest <GameObject> assetRequest = null; try { assetRequest = Content.LoadAsync(uiAvatarPrefabContentKey); } catch (Exception ex) { Log.LogError(this, $"Could not load UI Avatar penguin asset {uiAvatarPrefabContentKey.Key}. Message: {ex.Message}"); } if (assetRequest != null) { yield return(assetRequest); avatarPrefab = assetRequest.Asset; isLoadingAvatarPrefab = false; } } if (avatarPrefab != null) { GameObject avatarInstance = UnityEngine.Object.Instantiate(avatarPrefab); IconRenderLightingRig lightingRig = IconRenderLightingRig.Acquire(); while (!lightingRig.IsReady) { yield return(null); } DCustomOutfit avatarOutfit = default(DCustomOutfit); avatarOutfit.Equipment = outfit; AvatarModel avatarModel = avatarInstance.GetComponent <AvatarModel>(); yield return(AvatarRenderer.RenderOutfit(avatarOutfit, avatarModel.BeakColor, bodyColor, avatarModel.BellyColor, imageBuilderCameraData, avatarInstance, (ModelRenderer modelRenderer) => onProcessAnimationFrame(modelRenderer, renderRequest.Handle, avatarInstance), avatarFrame)); IconRenderLightingRig.Release(); } else { Log.LogErrorFormatted(this, "Unabe to load the UI Avatar Prefab at path {0}", uiAvatarPrefabContentKey.Key); } }
private void OnEnable() { lightingRig = IconRenderLightingRig.Acquire(); }