Esempio n. 1
0
    private void GetThumbnail()
    {
        var url = catalogItem?.GetThumbnailUrl();

        if (url == loadedThumbnailURL)
        {
            return;
        }

        if (catalogItem == null || string.IsNullOrEmpty(url))
        {
            return;
        }

        string newLoadedThumbnailURL     = url;
        var    newLoadedThumbnailPromise = new AssetPromise_Texture(url);


        newLoadedThumbnailPromise.OnSuccessEvent += SetThumbnail;
        newLoadedThumbnailPromise.OnFailEvent    += x => { Debug.Log($"Error downloading: {url}"); };

        AssetPromiseKeeper_Texture.i.Keep(newLoadedThumbnailPromise);


        AssetPromiseKeeper_Texture.i.Forget(loadedThumbnailPromise);
        loadedThumbnailPromise = newLoadedThumbnailPromise;
        loadedThumbnailURL     = newLoadedThumbnailURL;
    }
Esempio n. 2
0
        internal void SetThumbnail(string thumbnailURL)
        {
            if (thumbnailURL == currentThumbnail)
            {
                animator.SetTrigger(LOADED_ANIM_TRIGGER);
                return;
            }

            currentThumbnail = thumbnailURL;
            if (thumbnailPromise != null)
            {
                thumbnailPromise.ClearEvents();
                AssetPromiseKeeper_Texture.i.Forget(thumbnailPromise);
            }

            if (string.IsNullOrEmpty(currentThumbnail))
            {
                thumbnailImage.gameObject.SetActive(false);
                animator.SetTrigger(LOADED_ANIM_TRIGGER);
                return;
            }

            thumbnailPromise = new AssetPromise_Texture(currentThumbnail);
            thumbnailPromise.OnSuccessEvent += OnThumbnailReady;
            thumbnailPromise.OnFailEvent    += x =>
            {
                thumbnailImage.gameObject.SetActive(false);
                animator.SetTrigger(LOADED_ANIM_TRIGGER);
                Debug.LogError($"Error downloading quest panel entry thumbnail: {currentThumbnail}");
            };

            AssetPromiseKeeper_Texture.i.Keep(thumbnailPromise);
        }
    void ISceneCardView.SetThumbnail(string thumbnailUrl)
    {
        if (this.thumbnailUrl == thumbnailUrl)
        {
            return;
        }

        this.thumbnailUrl = thumbnailUrl;

        isLoadingThumbnail = true;
        loadingAnimator.SetBool(isLoadingAnimation, isLoadingThumbnail);

        if (thumbnailPromise != null)
        {
            AssetPromiseKeeper_Texture.i.Forget(thumbnailPromise);
            thumbnailPromise = null;
        }


        if (string.IsNullOrEmpty(thumbnailUrl))
        {
            ((ISceneCardView)this).SetThumbnail((Texture2D)null);
            return;
        }

        thumbnailPromise = new AssetPromise_Texture(thumbnailUrl);
        thumbnailPromise.OnSuccessEvent += texture => ((ISceneCardView)this).SetThumbnail(texture.texture);
        thumbnailPromise.OnFailEvent    += texture => ((ISceneCardView)this).SetThumbnail((Texture2D)null);

        AssetPromiseKeeper_Texture.i.Keep(thumbnailPromise);
    }
Esempio n. 4
0
    private void GetThumbnail()
    {
        SetLoadingActive(true);

        if (catalogItem == null)
        {
            return;
        }

        var url = catalogItem.GetThumbnailUrl();

        if (string.IsNullOrEmpty(url) || url == loadedThumbnailURL)
        {
            return;
        }

        ClearThumbnailPromise();
        loadedThumbnailPromise = new AssetPromise_Texture(url);

        loadedThumbnailPromise.OnSuccessEvent += x =>
        {
            loadedThumbnailURL = url;
            SetThumbnail(x);
        };

        loadedThumbnailPromise.OnFailEvent += x =>
        {
            Debug.Log($"Error downloading: {url}");
            SetLoadingActive(false);
        };

        AssetPromiseKeeper_Texture.i.Keep(loadedThumbnailPromise);
    }
    private void GetThumbnail()
    {
        var newCurrentThumbnailPromise = ThumbnailsManager.GetThumbnail(currentThumbnailUrl, ThumbnailReady);

        ThumbnailsManager.ForgetThumbnail(currentThumbnailPromise);
        currentThumbnailPromise = newCurrentThumbnailPromise;
    }
        internal void SetIcon(string iconURL)
        {
            if (iconPromise != null)
            {
                iconPromise.ClearEvents();
                AssetPromiseKeeper_Texture.i.Forget(iconPromise);
            }

            if (string.IsNullOrEmpty(iconURL))
            {
                iconImage.gameObject.SetActive(false);
                return;
            }

            iconPromise = new AssetPromise_Texture(iconURL);
            iconPromise.OnSuccessEvent += assetTexture =>
            {
                iconImage.gameObject.SetActive(true);
                iconImage.texture = assetTexture.texture;
            };
            iconPromise.OnFailEvent += assetTexture =>
            {
                iconImage.gameObject.SetActive(false);
                Debug.Log($"Error downloading quest tracker entry icon: {iconURL}");
            };

            AssetPromiseKeeper_Texture.i.Keep(iconPromise);
        }
Esempio n. 7
0
    public void SetThumbnail(string url)
    {
        if (url == thumbnailUrl)
        {
            return;
        }

        isLoadingThumbnail = true;
        loadingAnimator.SetBool(isLoadingAnimation, isLoadingThumbnail);
        thumbnailUrl = url;

        var prevPromise = thumbnailPromise;

        if (string.IsNullOrEmpty(url))
        {
            SetThumbnail(defaultThumbnail);
        }
        else
        {
            thumbnailPromise = new AssetPromise_Texture(url);
            thumbnailPromise.OnSuccessEvent += asset => SetThumbnail(asset.texture);
            thumbnailPromise.OnFailEvent    += asset => SetThumbnail(defaultThumbnail);
            AssetPromiseKeeper_Texture.i.Keep(thumbnailPromise);
        }

        if (prevPromise != null)
        {
            AssetPromiseKeeper_Texture.i.Forget(prevPromise);
        }
    }
    private void SetCatalogItemToShortcut(CatalogItem catalogItem)
    {
        if (catalogItem == null)
        {
            return;
        }

        var url = catalogItem.GetThumbnailUrl();

        if (string.IsNullOrEmpty(url))
        {
            return;
        }

        ClearThumbnailPromise(quickBarShortcutsThumbnailPromises[lastIndexDroped]);
        quickBarShortcutsThumbnailPromises[lastIndexDroped] = new AssetPromise_Texture(url);

        quickBarShortcutsThumbnailPromises[lastIndexDroped].OnSuccessEvent += x =>
        {
            SetQuickBarShortcut(catalogItem, lastIndexDroped, x.texture);
        };

        quickBarShortcutsThumbnailPromises[lastIndexDroped].OnFailEvent += x =>
        {
            Debug.Log($"Error downloading: {url}");
        };

        AssetPromiseKeeper_Texture.i.Keep(quickBarShortcutsThumbnailPromises[lastIndexDroped]);
    }
Esempio n. 9
0
    private void GetThumbnail(SceneObject sceneObject)
    {
        var url = sceneObject?.GetComposedThumbnailUrl();

        if (sceneObject == null || string.IsNullOrEmpty(url))
        {
            return;
        }

        if (string.Equals(sceneObject.asset_pack_id, BuilderInWorldSettings.ASSETS_COLLECTIBLES))
        {
            url = sceneObject.thumbnail;
        }

        string newLoadedThumbnailURL     = url;
        var    newLoadedThumbnailPromise = new AssetPromise_Texture(url);


        newLoadedThumbnailPromise.OnSuccessEvent += SetThumbnail;
        newLoadedThumbnailPromise.OnFailEvent    += x => { Debug.Log($"Error downloading: {url}"); };

        AssetPromiseKeeper_Texture.i.Keep(newLoadedThumbnailPromise);


        AssetPromiseKeeper_Texture.i.Forget(loadedThumbnailPromise);

        loadedThumbnailPromise = newLoadedThumbnailPromise;
        loadedThumbnailURL     = newLoadedThumbnailURL;
    }
Esempio n. 10
0
 private void ClearThumbnailPromise()
 {
     if (loadedThumbnailPromise != null)
     {
         loadedThumbnailPromise.ClearEvents();
         AssetPromiseKeeper_Texture.i.Forget(loadedThumbnailPromise);
         loadedThumbnailPromise = null;
     }
 }
 private void ClearThumbnailPromise(AssetPromise_Texture thumbnailToClear)
 {
     if (thumbnailToClear != null)
     {
         thumbnailToClear.ClearEvents();
         AssetPromiseKeeper_Texture.i.Forget(thumbnailToClear);
         thumbnailToClear = null;
     }
 }
    private void GetThumbnail()
    {
        string url = collectible.ComposeThumbnailUrl();
        //NOTE(Brian): Get before forget to prevent referenceCount == 0 and asset unload
        var newThumbnailPromise = ThumbnailsManager.GetThumbnail(url, OnThumbnailReady);

        ForgetThumbnail();
        thumbnailPromise = newThumbnailPromise;
    }
Esempio n. 13
0
    IEnumerator FetchNFTImage()
    {
        if (spinner != null)
        {
            spinner.SetActive(true);
        }

        string thumbnailImageURL = null;
        string previewImageURL   = null;
        string originalImageURL  = null;

        yield return(NFTHelper.FetchNFTInfo(darURLRegistry, darURLAsset,
                                            (nftInfo) =>
        {
            thumbnailImageURL = nftInfo.thumbnailUrl;
            previewImageURL = nftInfo.previewImageUrl;
            originalImageURL = nftInfo.originalImageUrl;
        },
                                            (error) =>
        {
            Debug.LogError($"Didn't find any asset image for '{darURLRegistry}/{darURLAsset}' for the NFTShape.\n{error}");
            OnLoadingAssetFail?.Invoke();
        }));

        yield return(new DCL.WaitUntil(() => (CommonScriptableObjects.playerUnityPosition - transform.position).sqrMagnitude < 900f));

        // We download the "preview" 256px image
        bool foundDCLImage = false;

        if (!string.IsNullOrEmpty(previewImageURL))
        {
            lastURLUsed = previewImageURL;

            yield return(WrappedTextureUtils.Fetch(previewImageURL, (downloadedTex, texturePromise) =>
            {
                foundDCLImage = true;
                this.texturePromise = texturePromise;
                SetFrameImage(downloadedTex, resizeFrameMesh: true);
            }, Asset_Gif.MaxSize.DONT_RESIZE));
        }

        //We fall back to the nft original image which can have a really big size
        if (!foundDCLImage && !string.IsNullOrEmpty(originalImageURL))
        {
            lastURLUsed = originalImageURL;

            yield return(WrappedTextureUtils.Fetch(originalImageURL, (downloadedTex, texturePromise) =>
            {
                foundDCLImage = true;
                this.texturePromise = texturePromise;
                SetFrameImage(downloadedTex, resizeFrameMesh: true);
            }, Asset_Gif.MaxSize._256));
        }

        FinishLoading(foundDCLImage);
    }
Esempio n. 14
0
    public static void ForgetThumbnail(AssetPromise_Texture promise)
    {
        if (promise == null)
        {
            return;
        }

        //Debug.Log("Forget thumbnail " + promise.asset.id);
        AssetPromiseKeeper_Texture.i.Forget(promise);
    }
Esempio n. 15
0
        public void RestorePreviewAsset()
        {
            if (hqTexture != null)
            {
                AssetPromiseKeeper_Texture.i.Forget(hqTexture);
                hqTexture = null;
            }

            textureUpdateCallback?.Invoke(previewAsset.texture);
        }
Esempio n. 16
0
    private void OnDestroy()
    {
        isDestroyed = true;

        if (thumbnailPromise != null)
        {
            AssetPromiseKeeper_Texture.i.Forget(thumbnailPromise);
            thumbnailPromise = null;
        }
    }
    private void CleanUpPromise()
    {
        if (texturePromise == null)
        {
            return;
        }

        AssetPromiseKeeper_Texture.i.Forget(texturePromise);
        texturePromise.Cleanup();
        texturePromise = null;
    }
    private void ForgetThumbnail()
    {
        if (currentThumbnailPromise == null)
        {
            return;
        }

        ThumbnailsManager.ForgetThumbnail(currentThumbnailPromise);
        ThumbnailReady(null);
        currentThumbnailPromise = null;
    }
Esempio n. 19
0
        public void Dispose()
        {
            if (hqTexture == null)
            {
                return;
            }

            AssetPromiseKeeper_Texture.i.Forget(hqTexture);
            hqTexture             = null;
            textureUpdateCallback = null;
        }
Esempio n. 20
0
 public void Dispose()
 {
     if (!isDestroyed)
     {
         Destroy(gameObject);
     }
     if (thumbnailPromise != null)
     {
         AssetPromiseKeeper_Texture.i.Forget(thumbnailPromise);
         thumbnailPromise = null;
     }
 }
Esempio n. 21
0
 private void OnDestroy()
 {
     if (texturePromise != null)
     {
         AssetPromiseKeeper_Texture.i.Forget(texturePromise);
         texturePromise = null;
     }
     else
     {
         imageAsset?.Dispose();
     }
 }
Esempio n. 22
0
 public void ClearThumbnail()
 {
     if (profile != null)
     {
         profile.OnFaceSnapshotReadyEvent -= SetThumbnail;
     }
     if (thumbnailPromise != null)
     {
         AssetPromiseKeeper_Texture.i.Forget(thumbnailPromise);
         thumbnailPromise = null;
     }
     userThumbnail.texture = null;
 }
Esempio n. 23
0
    private void GetThumbnail()
    {
        if (currentModel == null)
        {
            return;
        }

        //NOTE(Brian): Get before forget to prevent referenceCount == 0 and asset unload
        var newThumbnailPromise = ThumbnailsManager.GetThumbnail(currentModel.thumbnail, UpdateItemThumbnail);

        ThumbnailsManager.ForgetThumbnail(thumbnailPromise);
        thumbnailPromise = newThumbnailPromise;
    }
    public IEnumerator FetchTextures()
    {
        if (mainTexturePromise != null)
        {
            AssetPromiseKeeper_Texture.i.Forget(mainTexturePromise);
        }

        if (maskTexturePromise != null)
        {
            AssetPromiseKeeper_Texture.i.Forget(maskTexturePromise);
        }

        mainTexture = null;
        maskTexture = null;

        var representation = wearableItem.GetRepresentation(bodyShape.bodyShapeId);

        string mainTextureHash = representation?.contents?.FirstOrDefault(x => x.key == representation?.mainFile)?.hash;

        if (mainTextureHash == null)
        {
            mainTextureHash = representation?.contents?.FirstOrDefault(x => !x.key.ToLower().Contains("_mask.png"))?.hash;
        }
        string maskhash = representation?.contents?.FirstOrDefault(x => x.key.ToLower().Contains("_mask.png"))?.hash;

        if (!string.IsNullOrEmpty(mainTextureHash))
        {
            mainTexturePromise = new AssetPromise_Texture(wearableItem.baseUrl + mainTextureHash);
            mainTexturePromise.OnSuccessEvent += (x) => mainTexture = x.texture;
            mainTexturePromise.OnFailEvent    += (x) => mainTexture = null;

            AssetPromiseKeeper_Texture.i.Keep(mainTexturePromise);
        }

        if (!string.IsNullOrEmpty(maskhash))
        {
            maskTexturePromise = new AssetPromise_Texture(wearableItem.baseUrl + maskhash);
            maskTexturePromise.OnSuccessEvent += (x) => maskTexture = x.texture;
            maskTexturePromise.OnFailEvent    += (x) => maskTexture = null;

            AssetPromiseKeeper_Texture.i.Keep(maskTexturePromise);
        }

        yield return(mainTexturePromise);

        yield return(maskTexturePromise);

        PrepareWearable();
    }
Esempio n. 25
0
    public void Dispose()
    {
        scenesViewController.OnSceneSelected -= OnSelectScene;

        if (promiseAvatarThumbnail != null)
        {
            AssetPromiseKeeper_Texture.i.Forget(promiseAvatarThumbnail);
        }
        if (promiseSceneThumbnail != null)
        {
            AssetPromiseKeeper_Texture.i.Forget(promiseSceneThumbnail);
        }

        promiseAvatarThumbnail = null;
        promiseSceneThumbnail  = null;
    }
Esempio n. 26
0
    private IEnumerator FetchNFTImage(NFTInfo nftInfo)
    {
        spinnerNftImage.SetActive(true);

        ITexture nftImageAsset = null;

        yield return(WrappedTextureUtils.Fetch(nftInfo.previewImageUrl,
                                               (downloadedTex, texturePromise) =>
        {
            nftImageAsset = downloadedTex;
            this.texturePromise = texturePromise;
        }));

        if (nftImageAsset == null)
        {
            yield return(WrappedTextureUtils.Fetch(nftInfo.originalImageUrl,
                                                   (downloadedTex, texturePromise) =>
            {
                nftImageAsset = downloadedTex;
                this.texturePromise = texturePromise;
            }, Asset_Gif.MaxSize._256));
        }

        if (nftImageAsset != null)
        {
            imageAsset       = nftImageAsset;
            imageNft.texture = nftImageAsset.texture;

            if (nftImageAsset is Asset_Gif gifAsset)
            {
                gifAsset.OnFrameTextureChanged += (texture) => { imageNft.texture = texture; };
                gifAsset.Play();
            }
            else
            {
                if (!backgroundColorSet)
                {
                    SetSmartBackgroundColor(nftImageAsset.texture);
                }
            }

            SetNFTImageSize(nftImageAsset.texture);

            imageNft.gameObject.SetActive(true);
            spinnerNftImage.SetActive(false);
        }
    }
Esempio n. 27
0
        public void FetchAndSetHQAsset(string url, Action onSuccess, Action onFail)
        {
            hqTexture = new AssetPromise_Texture(url);

            hqTexture.OnSuccessEvent += (asset) =>
            {
                textureUpdateCallback?.Invoke(asset.texture);
                onSuccess?.Invoke();
            };
            hqTexture.OnFailEvent += (asset) =>
            {
                hqTexture = null;
                onFail?.Invoke();
            };

            AssetPromiseKeeper_Texture.i.Keep(hqTexture);
        }
Esempio n. 28
0
    public void OverrideAvatar(AvatarModel newModel, Texture2D newFaceSnapshot)
    {
        if (model?.snapshots != null)
        {
            if (thumbnailPromise != null)
            {
                ThumbnailsManager.ForgetThumbnail(thumbnailPromise);
                thumbnailPromise = null;
            }

            OnFaceSnapshotReady(null);
        }

        model.avatar.CopyFrom(newModel);
        this.faceSnapshot = newFaceSnapshot;
        OnUpdate?.Invoke(this);
    }
Esempio n. 29
0
    public void UpdateData(UserProfileModel newModel, bool downloadAssets = true)
    {
        faceSnapshot = null;

        if (newModel == null)
        {
            model = null;
            return;
        }

        model.userId            = newModel.userId;
        model.ethAddress        = newModel.ethAddress;
        model.parcelsWithAccess = newModel.parcelsWithAccess;
        model.tutorialStep      = newModel.tutorialStep;
        model.hasClaimedName    = newModel.hasClaimedName;
        model.name        = newModel.name;
        model.email       = newModel.email;
        model.description = newModel.description;
        model.avatar.CopyFrom(newModel.avatar);
        model.snapshots        = newModel.snapshots;
        model.hasConnectedWeb3 = newModel.hasConnectedWeb3;
        model.inventory        = newModel.inventory;
        model.blocked          = newModel.blocked;
        model.muted            = newModel.muted;

        if (model.inventory != null)
        {
            SetInventory(model.inventory);
        }

        if (downloadAssets && model.snapshots != null)
        {
            //NOTE(Brian): Get before forget to prevent referenceCount == 0 and asset unload
            var newThumbnailPromise = ThumbnailsManager.GetThumbnail(model.snapshots.face256, OnFaceSnapshotReady);
            ThumbnailsManager.ForgetThumbnail(thumbnailPromise);
            thumbnailPromise = newThumbnailPromise;
        }
        else
        {
            ThumbnailsManager.ForgetThumbnail(thumbnailPromise);
            thumbnailPromise = null;
        }

        OnUpdate?.Invoke(this);
    }
    private void GetThumbnail(DCLBuilderInWorldEntity entity)
    {
        var url = entity.GetSceneObjectAssociated()?.GetComposedThumbnailUrl();

        if (string.IsNullOrEmpty(url))
        {
            return;
        }

        string newLoadedThumbnailURL     = url;
        var    newLoadedThumbnailPromise = new AssetPromise_Texture(url);


        newLoadedThumbnailPromise.OnSuccessEvent += SetThumbnail;
        newLoadedThumbnailPromise.OnFailEvent    += x => { Debug.Log($"Error downloading: {url}"); };

        AssetPromiseKeeper_Texture.i.Keep(newLoadedThumbnailPromise);
    }