< Summary

Class:DCL.HUD.Common.ScrollRectSensitivityHandler
Assembly:HUDCommon
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Common/ScrollRectSensitivityHandler.cs
Covered lines:10
Uncovered lines:11
Coverable lines:21
Total lines:78
Line coverage:47.6% (10 of 21)
Covered branches:0
Total branches:0
Covered methods:4
Total methods:5
Method coverage:80% (4 of 5)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Awake()0%110100%
SetScrollRectSensitivity()0%110100%
GetScrollMultiplier()0%10.45040%
GetCurrentOperatingSystem()0%110100%
ObtainOsFromWebGLAgent()0%42600%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Common/ScrollRectSensitivityHandler.cs

#LineLine coverage
 1using MainScripts.DCL.WebPlugin;
 2using System;
 3using UnityEngine;
 4using UnityEngine.UI;
 5
 6namespace DCL.HUD.Common
 7{
 8    /// <summary>
 9    /// Attaching this component to a scroll rect to apply the scroll sensitivity based on the os based stored sensitivi
 10    /// </summary>
 11    [RequireComponent(typeof(ScrollRect))]
 12    public class ScrollRectSensitivityHandler : MonoBehaviour
 13    {
 14        private const float WINDOWS_SENSITIVITY_MULTIPLIER = 4.5f;
 15        private const float MAC_SENSITIVITY_MULTIPLIER = 1.5f;
 16        private const float LINUX_SENSITIVITY_MULTIPLIER = 1.125f;
 17        private const float DEFAULT_SENSITIVITY_MULTIPLIER = 1.32f;
 18
 19        private ScrollRect myScrollRect;
 20        private float defaultSens;
 21
 22        private void Awake()
 23        {
 65024            myScrollRect = GetComponent<ScrollRect>();
 65025            defaultSens = myScrollRect.scrollSensitivity;
 65026            SetScrollRectSensitivity();
 65027        }
 28
 29        private void SetScrollRectSensitivity()
 30        {
 65031            float scrollSensitivity = defaultSens * GetScrollMultiplier();
 65032            myScrollRect.scrollSensitivity = scrollSensitivity;
 65033        }
 34
 35        private float GetScrollMultiplier()
 36        {
 65037            OperatingSystemFamily currentOperatingSystem = GetCurrentOperatingSystem();
 38
 39            switch (currentOperatingSystem)
 40            {
 41                case OperatingSystemFamily.Windows:
 042                    return WINDOWS_SENSITIVITY_MULTIPLIER;
 43                case OperatingSystemFamily.Linux:
 65044                    return LINUX_SENSITIVITY_MULTIPLIER;
 45                case OperatingSystemFamily.MacOSX:
 046                    return MAC_SENSITIVITY_MULTIPLIER;
 47                default:
 048                    return DEFAULT_SENSITIVITY_MULTIPLIER;
 49            }
 50        }
 51
 52        private OperatingSystemFamily GetCurrentOperatingSystem() {
 53#if UNITY_WEBGL
 54            return ObtainOsFromWebGLAgent();
 55#else
 65056            return SystemInfo.operatingSystemFamily;
 57#endif
 58        }
 59
 60        private OperatingSystemFamily ObtainOsFromWebGLAgent() {
 061            string agentInfo = WebGLPlugin.GetUserAgent();
 62
 063            if (agentInfo.Contains("windows", StringComparison.OrdinalIgnoreCase))
 064                return OperatingSystemFamily.Windows;
 65
 066            if (agentInfo.Contains("mac", StringComparison.OrdinalIgnoreCase)
 67                || agentInfo.Contains("osx", StringComparison.OrdinalIgnoreCase)
 68                || agentInfo.Contains("os x", StringComparison.OrdinalIgnoreCase))
 069                return OperatingSystemFamily.MacOSX;
 70
 071            if (agentInfo.Contains("linux", StringComparison.OrdinalIgnoreCase))
 072                return OperatingSystemFamily.Linux;
 73
 074            return OperatingSystemFamily.Other;
 75        }
 76
 77    }
 78}