< Summary

Class:DCL.AssetPromise_TextureResource
Assembly:AssetPromiseKeeper
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/TextureResource/AssetPromise_TextureResource.cs
Covered lines:34
Uncovered lines:16
Coverable lines:50
Total lines:105
Line coverage:68% (34 of 50)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AssetPromise_TextureResource(...)0%2100%
OnAfterLoadOrReuse()0%110100%
OnBeforeLoadOrReuse()0%110100%
OnCancelLoading()0%220100%
OnForget()0%220100%
OnLoad(...)0%17.3810058.06%
GetLibraryAssetCheckId()0%110100%
GetId()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/TextureResource/AssetPromise_TextureResource.cs

#LineLine coverage
 1using System;
 2using UnityEngine;
 3
 4namespace DCL
 5{
 6    public class AssetPromise_TextureResource : AssetPromise<Asset_TextureResource>
 7    {
 8        private TextureModel model;
 9        private AssetPromise_Texture texturePromise;
 10
 011        public AssetPromise_TextureResource(TextureModel model)
 12        {
 013            this.model = model;
 014        }
 15
 2316        protected override void OnAfterLoadOrReuse() { }
 17
 3518        protected override void OnBeforeLoadOrReuse() { }
 19
 20        protected override void OnCancelLoading()
 21        {
 1222            if(texturePromise != null)
 1223                AssetPromiseKeeper_Texture.i.Forget(texturePromise);
 1224        }
 25
 26        internal override void OnForget()
 27        {
 2328            if(texturePromise != null)
 2229                AssetPromiseKeeper_Texture.i.Forget(texturePromise);
 2330        }
 31
 32        protected override void OnLoad(Action OnSuccess, Action<Exception> OnFail)
 33        {
 2834            FilterMode unitySamplingMode = model.samplingMode;
 2835            TextureWrapMode unityWrap = TextureWrapMode.Clamp;
 2836            switch (model.wrap)
 37            {
 38                case TextureModel.BabylonWrapMode.CLAMP:
 439                    unityWrap = TextureWrapMode.Clamp;
 440                    break;
 41                case TextureModel.BabylonWrapMode.WRAP:
 2442                    unityWrap = TextureWrapMode.Repeat;
 2443                    break;
 44                case TextureModel.BabylonWrapMode.MIRROR:
 045                    unityWrap = TextureWrapMode.Mirror;
 46                    break;
 47            }
 48
 2849            if (!string.IsNullOrEmpty(model.src))
 50            {
 2851                bool isBase64 = model.src.Contains("image/png;base64");
 52
 2853                if (isBase64)
 54                {
 055                    string base64Data = model.src.Substring(model.src.IndexOf(',') + 1);
 56
 57                    // The used texture variable can't be null for the ImageConversion.LoadImage to work
 058                    Texture2D texture = new Texture2D(1, 1);
 59
 060                    if (!ImageConversion.LoadImage(texture, Convert.FromBase64String(base64Data)))
 61                    {
 062                        Debug.LogError($"DCLTexture with model {model} couldn't parse its base64 image data.");
 63                    }
 64
 065                    if (texture != null)
 66                    {
 067                        texture.wrapMode = unityWrap;
 068                        texture.filterMode = unitySamplingMode;
 69
 070                        if (DataStore.i.textureConfig.runCompression.Get())
 071                            texture.Compress(false);
 72
 073                        texture.Apply(unitySamplingMode != FilterMode.Point, true);
 074                        asset.texture2D = texture;
 75                    }
 076                }
 77                else
 78                {
 2879                    string contentsUrl = model.src;
 80
 2881                    if (!string.IsNullOrEmpty(contentsUrl))
 82                    {
 2883                        Texture2D result = null;
 2884                        texturePromise = new AssetPromise_Texture(contentsUrl, unityWrap, unitySamplingMode, storeDefaul
 2885                        texturePromise.OnSuccessEvent += (texture) =>
 86                        {
 1687                            asset.texture2D = texture.texture;
 1688                            OnSuccess?.Invoke();
 1689                        };
 2890                        texturePromise.OnFailEvent += (texture, error) =>
 91                        {
 492                            result = null;
 493                            OnFail?.Invoke(error);
 494                        };
 95
 2896                        AssetPromiseKeeper_Texture.i.Keep(texturePromise);
 97                    }
 98                }
 99            }
 28100        }
 101
 35102        protected override object GetLibraryAssetCheckId() { return model; }
 140103        public override object GetId() { return model; }
 104    }
 105}