Beispiel #1
0
 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);
 }
Beispiel #6
0
    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);
        }
    }
Beispiel #7
0
 private void OnEnable()
 {
     lightingRig = IconRenderLightingRig.Acquire();
 }