< 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:46
Uncovered lines:4
Coverable lines:50
Total lines:106
Line coverage:92% (46 of 50)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Load(...)0%6.026091.67%
OnFailWrapper(...)0%220100%
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 FEATURE_GLTFAST = "gltfast";
 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        {
 6821            if (loadHelper != null)
 22            {
 223                loadHelper.Unload();
 24
 225                if (VERBOSE)
 026                    Debug.Log("Forgetting not null loader...");
 27            }
 28
 6829            alreadyLoaded = false;
 6830            Assert.IsFalse(string.IsNullOrEmpty(targetUrl), "url is null!!");
 31
 6832            bool CheckIfGltFastIsEnabled() => DataStore.i.featureFlags.flags.Get().IsFeatureEnabled(FEATURE_GLTFAST);
 33
 6834            if (customContentProvider == null)
 035                loadHelper = new RendereableAssetLoadHelper(this.entity.scene.contentProvider, entity.scene.sceneData.ba
 36            else
 6837                loadHelper = new RendereableAssetLoadHelper(customContentProvider, entity.scene.sceneData.baseUrlBundles
 38
 6839            loadHelper.settings.forceGPUOnlyMesh = true;
 6840            loadHelper.settings.parent = entity.meshRootGameObject.transform;
 41
 6842            if (initialVisibility == false)
 43            {
 444                loadHelper.settings.visibleFlags = AssetPromiseSettings_Rendering.VisibleFlags.INVISIBLE;
 45            }
 46            else
 47            {
 6448                if (useVisualFeedback)
 149                    loadHelper.settings.visibleFlags = AssetPromiseSettings_Rendering.VisibleFlags.VISIBLE_WITH_TRANSITI
 50                else
 6351                    loadHelper.settings.visibleFlags = AssetPromiseSettings_Rendering.VisibleFlags.VISIBLE_WITHOUT_TRANS
 52            }
 53
 6854            this.entity.OnCleanupEvent -= OnEntityCleanup;
 6855            this.entity.OnCleanupEvent += OnEntityCleanup;
 56
 13057            successWrapperEvent = x => OnSuccessWrapper(OnSuccess);
 7158            failWrapperEvent = error => OnFailWrapper(OnFail, error);
 59
 6860            loadHelper.OnSuccessEvent += successWrapperEvent;
 6861            loadHelper.OnFailEvent += failWrapperEvent;
 6862            loadHelper.Load(targetUrl);
 6863        }
 64
 65        private void OnFailWrapper(Action<LoadWrapper, Exception> OnFail, Exception exception)
 66        {
 367            alreadyLoaded = true;
 368            loadHelper.OnSuccessEvent -= successWrapperEvent;
 369            loadHelper.OnFailEvent -= failWrapperEvent;
 370            this.entity.OnCleanupEvent -= OnEntityCleanup;
 371            OnFail?.Invoke(this, exception);
 372        }
 73
 74        private void OnSuccessWrapper(Action<LoadWrapper> OnSuccess)
 75        {
 6276            alreadyLoaded = true;
 6277            loadHelper.OnSuccessEvent -= successWrapperEvent;
 6278            loadHelper.OnFailEvent -= failWrapperEvent;
 79
 6280            loadHelper.loadedAsset.ownerId = entity.entityId;
 6281            DataStore.i.sceneWorldObjects.AddRendereable(entity.scene.sceneData.sceneNumber, loadHelper.loadedAsset);
 6282            OnSuccess?.Invoke(this);
 6283        }
 84
 285        public void OnEntityCleanup(ICleanableEventDispatcher source) { Unload(); }
 86
 87        public override void Unload()
 88        {
 4889            if (loadHelper == null)
 090                return;
 91
 4892            if ( loadHelper.loadedAsset != null )
 93            {
 4594                DataStore.i.sceneWorldObjects.RemoveRendereable(entity.scene.sceneData.sceneNumber, loadHelper.loadedAss
 95            }
 96
 4897            loadHelper.Unload();
 4898            this.entity.OnCleanupEvent -= OnEntityCleanup;
 4899            loadHelper.OnSuccessEvent -= successWrapperEvent;
 48100            loadHelper.OnFailEvent -= failWrapperEvent;
 48101            alreadyLoaded = false;
 48102        }
 103
 0104        public override string ToString() { return $"LoadWrapper ... {loadHelper.ToString()}"; }
 105    }
 106}