< Summary

Class:AvatarSystem.BaseAvatar
Assembly:AvatarSystem
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/AvatarSystem/BaseAvatar.cs
Covered lines:17
Uncovered lines:15
Coverable lines:32
Total lines:80
Line coverage:53.1% (17 of 32)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BaseAvatar(...)0%110100%
GetArmatureContainer()0%110100%
GetMainRenderer()0%2100%
Initialize()0%6200%
FadeOut()0%6.566075%
CancelTransition()0%12300%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/AvatarSystem/BaseAvatar.cs

#LineLine coverage
 1using System.Collections;
 2using System.Collections.Generic;
 3using System.Threading;
 4using Cysharp.Threading.Tasks;
 5using DCL.Helpers;
 6using UnityEngine;
 7
 8namespace AvatarSystem
 9{
 10    public class BaseAvatar : IBaseAvatar
 11    {
 412        public IBaseAvatarRevealer avatarRevealer { get; set; }
 13        private ILOD lod;
 14        private Transform avatarRevealerContainer;
 1215        private CancellationTokenSource transitionCts = new CancellationTokenSource();
 16
 17        public GameObject armatureContainer;
 018        public SkinnedMeshRenderer meshRenderer { get; private set; }
 19
 1220        public BaseAvatar(Transform avatarRevealerContainer, GameObject armatureContainer, ILOD lod)
 21        {
 1222            this.avatarRevealerContainer = avatarRevealerContainer;
 1223            this.armatureContainer = armatureContainer;
 1224            this.lod = lod;
 1225        }
 26
 27        public GameObject GetArmatureContainer()
 28        {
 129            return armatureContainer;
 30        }
 31
 32        public SkinnedMeshRenderer GetMainRenderer()
 33        {
 034            return avatarRevealer.GetMainRenderer();
 35        }
 36
 37        public void Initialize()
 38        {
 039            if (avatarRevealer == null)
 40            {
 041                var avatarRevealerObj = Object.Instantiate(Resources.Load<GameObject>("LoadingAvatar"), avatarRevealerCo
 42                                                   .GetComponent<BaseAvatarReveal>();
 043                Utils.SetLayerRecursively(avatarRevealerObj.transform, avatarRevealerContainer.gameObject.layer);
 044                avatarRevealer = avatarRevealerObj;
 45
 046                avatarRevealer.InjectLodSystem(lod);
 47            }
 48            else
 49            {
 050                avatarRevealer.Reset();
 51            }
 52
 053            meshRenderer = avatarRevealer.GetMainRenderer();
 054        }
 55
 56        public async UniTask FadeOut(MeshRenderer targetRenderer, bool withTransition, CancellationToken cancellationTok
 57        {
 158            if (avatarRevealerContainer == null)
 059                return;
 60
 161            transitionCts ??= new CancellationTokenSource();
 162            CancellationToken linkedCt = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, transitionCt
 163            linkedCt.ThrowIfCancellationRequested();
 64
 165            avatarRevealer.AddTarget(targetRenderer);
 66            //If canceled, the final state of the avatar is handle inside StartAvatarRevealAnimation
 167            await avatarRevealer.StartAvatarRevealAnimation(withTransition, linkedCt);
 68
 169            transitionCts?.Dispose();
 170            transitionCts = null;
 171        }
 72
 73        public void CancelTransition()
 74        {
 075            transitionCts?.Cancel();
 076            transitionCts?.Dispose();
 077            transitionCts = null;
 078        }
 79    }
 80}