< Summary

Class:DCL.Components.LoadWrapper_GLTF
Assembly:DCL.Components.LoadableShapes
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/LoadableShapes/LoadWrapper/LoadWrapper_GLTF.cs
Covered lines:38
Uncovered lines:11
Coverable lines:49
Total lines:104
Line coverage:77.5% (38 of 49)
Covered branches:0
Total branches:0
Covered methods:4
Total methods:6
Method coverage:66.6% (4 of 6)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Load(...)0%5.055087.5%
OnFailWrapper(...)0%6200%
OnSuccessWrapper(...)0%220100%
OnEntityCleanup(...)0%110100%
Unload()0%3.013090%
ToString()0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/LoadableShapes/LoadWrapper/LoadWrapper_GLTF.cs

#LineLine coverage
 1using System;
 2using UnityEngine;
 3using UnityEngine.Assertions;
 4
 5namespace DCL.Components
 6{
 7    public class LoadWrapper_GLTF : LoadWrapper
 8    {
 9        private const string SMR_UPDATE_OFFSCREEN_FEATURE_FLAG = "smr_update_offscreen";
 10        static readonly bool VERBOSE = false;
 11
 12        RendereableAssetLoadHelper loadHelper;
 13
 14        public ContentProvider customContentProvider;
 15
 16        private Action<Rendereable> successWrapperEvent;
 17        private Action<Exception> failWrapperEvent;
 18
 19        public override void Load(string targetUrl, Action<LoadWrapper> OnSuccess, Action<LoadWrapper, Exception> OnFail
 20        {
 6021            if (loadHelper != null)
 22            {
 223                loadHelper.Unload();
 24
 225                if (VERBOSE)
 026                    Debug.Log("Forgetting not null loader...");
 27            }
 28
 6029            alreadyLoaded = false;
 6030            Assert.IsFalse(string.IsNullOrEmpty(targetUrl), "url is null!!");
 31
 6032            DataStore_FeatureFlag featureFlags = DataStore.i.featureFlags;
 33
 6034            if (customContentProvider == null)
 035                loadHelper = new RendereableAssetLoadHelper(this.entity.scene.contentProvider, entity.scene.sceneData.ba
 36            else
 6037                loadHelper = new RendereableAssetLoadHelper(customContentProvider, entity.scene.sceneData.baseUrlBundles
 38
 6039            loadHelper.settings.forceGPUOnlyMesh = true;
 6040            loadHelper.settings.parent = entity.meshRootGameObject.transform;
 6041            loadHelper.settings.smrUpdateWhenOffScreen = featureFlags.flags.Get().IsFeatureEnabled(SMR_UPDATE_OFFSCREEN_
 42
 6043            if (initialVisibility == false)
 44            {
 045                loadHelper.settings.visibleFlags = AssetPromiseSettings_Rendering.VisibleFlags.INVISIBLE;
 46            }
 47            else
 48            {
 6049                loadHelper.settings.visibleFlags = AssetPromiseSettings_Rendering.VisibleFlags.VISIBLE_WITHOUT_TRANSITIO
 50            }
 51
 6052            this.entity.OnCleanupEvent -= OnEntityCleanup;
 6053            this.entity.OnCleanupEvent += OnEntityCleanup;
 54
 11755            successWrapperEvent = x => OnSuccessWrapper(OnSuccess);
 6056            failWrapperEvent = error => OnFailWrapper(OnFail, error);
 57
 6058            loadHelper.OnSuccessEvent += successWrapperEvent;
 6059            loadHelper.OnFailEvent += failWrapperEvent;
 6060            loadHelper.Load(targetUrl);
 6061        }
 62
 63        private void OnFailWrapper(Action<LoadWrapper, Exception> OnFail, Exception exception)
 64        {
 065            alreadyLoaded = true;
 066            loadHelper.OnSuccessEvent -= successWrapperEvent;
 067            loadHelper.OnFailEvent -= failWrapperEvent;
 068            this.entity.OnCleanupEvent -= OnEntityCleanup;
 069            OnFail?.Invoke(this, exception);
 070        }
 71
 72        private void OnSuccessWrapper(Action<LoadWrapper> OnSuccess)
 73        {
 5774            alreadyLoaded = true;
 5775            loadHelper.OnSuccessEvent -= successWrapperEvent;
 5776            loadHelper.OnFailEvent -= failWrapperEvent;
 77
 5778            loadHelper.loadedAsset.ownerId = entity.entityId;
 5779            DataStore.i.sceneWorldObjects.AddRendereable(entity.scene.sceneData.sceneNumber, loadHelper.loadedAsset);
 5780            OnSuccess?.Invoke(this);
 5781        }
 82
 283        public void OnEntityCleanup(ICleanableEventDispatcher source) { Unload(); }
 84
 85        public override void Unload()
 86        {
 4387            if (loadHelper == null)
 088                return;
 89
 4390            if ( loadHelper.loadedAsset != null )
 91            {
 4092                DataStore.i.sceneWorldObjects.RemoveRendereable(entity.scene.sceneData.sceneNumber, loadHelper.loadedAss
 93            }
 94
 4395            loadHelper.Unload();
 4396            this.entity.OnCleanupEvent -= OnEntityCleanup;
 4397            loadHelper.OnSuccessEvent -= successWrapperEvent;
 4398            loadHelper.OnFailEvent -= failWrapperEvent;
 4399            alreadyLoaded = false;
 43100        }
 101
 0102        public override string ToString() { return $"LoadWrapper ... {loadHelper.ToString()}"; }
 103    }
 104}