< Summary

Class:DCL.AvatarLODController
Assembly:AvatarLODController
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/Avatar/AvatarLOD/AvatarLODController/AvatarLODController.cs
Covered lines:37
Uncovered lines:7
Coverable lines:44
Total lines:97
Line coverage:84% (37 of 44)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AvatarLODController(...)0%440100%
SetLOD0()0%440100%
SetLOD1()0%440100%
SetLOD2()0%440100%
SetInvisible()0%4.134080%
SetAnimationThrottling(...)0%64050%
SetNameVisible(...)0%440100%
UpdateImpostorTint(...)0%20400%
Dispose()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/Avatar/AvatarLOD/AvatarLODController/AvatarLODController.cs

#LineLine coverage
 1using System;
 2using System.Collections;
 3using UnityEngine;
 4
 5namespace DCL
 6{
 7    //TODO Rename to IAvatar (not now to avoid conflicts)
 8    public interface IAvatarLODController : IDisposable
 9    {
 10        Player player { get; }
 11        void SetLOD0();
 12        void SetLOD1();
 13        void SetLOD2();
 14        public void SetAnimationThrottling(int framesBetweenUpdates);
 15        void SetInvisible();
 16        void UpdateImpostorTint(float distanceToMainPlayer);
 17        void SetNameVisible(bool visible);
 18    }
 19
 20    public class AvatarLODController : IAvatarLODController
 21    {
 2822        private string VISIBILITY_CONSTRAIN = "behind_camera_or_out_of_limits";
 15423        public Player player { get; }
 24
 2825        public AvatarLODController(Player player)
 26        {
 2827            this.player = player;
 2828            if (player?.avatar == null)
 629                return;
 2230            player.avatar.SetLODLevel(0);
 2231        }
 32
 33        public void SetLOD0()
 34        {
 2935            if (player?.avatar == null)
 2736                return;
 37
 238            player.onPointerDownCollider.SetColliderEnabled(true);
 239            player.avatar.SetLODLevel(0);
 240            player.avatar.RemoveVisibilityConstrain(VISIBILITY_CONSTRAIN);
 241        }
 42
 43        public void SetLOD1()
 44        {
 245            if (player?.avatar == null)
 146                return;
 47
 148            player.onPointerDownCollider.SetColliderEnabled(true);
 149            player.avatar.SetLODLevel(1);
 150            player.avatar.RemoveVisibilityConstrain(VISIBILITY_CONSTRAIN);
 151        }
 52
 53        public void SetLOD2()
 54        {
 255            if (player?.avatar == null)
 156                return;
 57
 158            player.onPointerDownCollider.SetColliderEnabled(false);
 159            player.avatar.SetLODLevel(2);
 160            player.avatar.RemoveVisibilityConstrain(VISIBILITY_CONSTRAIN);
 161        }
 62
 63        public void SetInvisible()
 64        {
 165            if (player?.avatar == null)
 066                return;
 67
 168            player.avatar.AddVisibilityConstraint(VISIBILITY_CONSTRAIN);
 169            player.onPointerDownCollider.SetColliderEnabled(false);
 170        }
 71
 72        public void SetAnimationThrottling(int framesBetweenUpdates)
 73        {
 2674            if (player?.avatar == null)
 2675                return;
 76
 077            player.avatar.SetAnimationThrottling(framesBetweenUpdates);
 078        }
 79
 80        public void SetNameVisible(bool visible)
 81        {
 2682            if (visible)
 1283                player?.playerName.Show();
 84            else
 1485                player?.playerName.Hide();
 1486        }
 87        public void UpdateImpostorTint(float distanceToMainPlayer)
 88        {
 089            if (player?.avatar == null)
 090                return;
 91
 092            player.avatar.SetImpostorTint(AvatarRendererHelpers.CalculateImpostorTint(distanceToMainPlayer));
 093        }
 94
 695        public void Dispose() { }
 96    }
 97}