private IEnumerator loadRenderGameObjects(DCustomEquipment[] outfit, AvatarAnimationFrame avatarFrame) { if (avatarInstance != null) { continueAvatarRender = false; cleanupRenderObjects(); yield return(null); } while (lightingRig != null && !lightingRig.IsReady) { yield return(null); } 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); avatarInstance = UnityEngine.Object.Instantiate(assetRequest.Asset); DCustomOutfit avatarOutfit = default(DCustomOutfit); avatarOutfit.Equipment = outfit; avatarImageSet = false; continueAvatarRender = true; AvatarModel avatarModel = avatarInstance.GetComponent <AvatarModel>(); yield return(AvatarRenderer.RenderOutfit(beakColor: avatarModel.BeakColor, bellyColor: avatarModel.BellyColor, bodyColor: useBodyColor ? bodyColor : avatarModel.BodyColor, outfit: avatarOutfit, cameraData: imageBuilderCameraData, avatarGO: avatarInstance, onProcessModel: onProcessAnimationFrame, animationFrame: avatarFrame)); } }
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); } }