< Summary

Class:DCL.MapGlobalUsersPositionMarkerController
Assembly:GlobalUsersPositionMarker
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/MapRenderer/GlobalUsersPositionMarker/MapGlobalUsersPositionMarkerController.cs
Covered lines:31
Uncovered lines:1
Coverable lines:32
Total lines:91
Line coverage:96.8% (31 of 32)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
MapGlobalUsersPositionMarkerController(...)0%110100%
SetUpdateMode(...)0%110100%
Dispose()0%110100%
OnScenesFetched(...)0%2100%
OnPlayerCoordsChanged(...)0%110100%
OnRenderStateChanged(...)0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/MapRenderer/GlobalUsersPositionMarker/MapGlobalUsersPositionMarkerController.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using UnityEngine;
 4
 5namespace DCL
 6{
 7    public class MapGlobalUsersPositionMarkerController : IDisposable
 8    {
 9        private const float UPDATE_INTERVAL_INITIAL = 10f;
 10        private const float UPDATE_INTERVAL_FOREGROUND = 60f;
 11        private const float UPDATE_INTERVAL_BACKGROUND = 5 * 60f;
 12
 13        private const int MAX_MARKERS = 100;
 14
 15        private const int COMMS_RADIUS_THRESHOLD = 2;
 16
 17        public enum UpdateMode
 18        {
 19            FOREGROUND,
 20            BACKGROUND
 21        }
 22
 23        FetchScenesHandler fetchScenesHandler;
 24        MarkersHandler markersHandler;
 25        UserPositionHandler userPositionHandler;
 26        Transform markersContainer;
 27
 11128        int commsRadius = 4;
 29
 30        /// <summary>
 31        /// Constructor
 32        /// </summary>
 33        /// <param name="markerPrefab">prefab for markers</param>
 34        /// <param name="overlayContainer">parent for markers</param>
 35        /// <param name="coordToMapPosFunc">function to transform coords to map position</param>
 11136        public MapGlobalUsersPositionMarkerController(UserMarkerObject markerPrefab, Transform overlayContainer, Func<fl
 37        {
 11138            fetchScenesHandler = new FetchScenesHandler(UPDATE_INTERVAL_INITIAL, UPDATE_INTERVAL_FOREGROUND, UPDATE_INTE
 11139            markersHandler = new MarkersHandler(markerPrefab, overlayContainer, MAX_MARKERS, coordToMapPosFunc);
 11140            userPositionHandler = new UserPositionHandler();
 11141            markersContainer = overlayContainer;
 42
 11143            fetchScenesHandler.OnScenesFetched += OnScenesFetched;
 11144            userPositionHandler.OnPlayerCoordsChanged += OnPlayerCoordsChanged;
 11145            CommonScriptableObjects.rendererState.OnChange += OnRenderStateChanged;
 46
 11147            KernelConfig.i.EnsureConfigInitialized()
 48                        .Then(config =>
 49                        {
 5650                            commsRadius = (int) config.comms.commRadius + COMMS_RADIUS_THRESHOLD;
 5651                            OnPlayerCoordsChanged(userPositionHandler.playerCoords);
 5652                        });
 11153            OnRenderStateChanged(CommonScriptableObjects.rendererState.Get(), false);
 11154        }
 55
 56        /// <summary>
 57        /// Set update mode. Scene's fetch intervals will smaller when updating in FOREGROUND than when updating in BACK
 58        /// </summary>
 59        /// <param name="updateMode">update mode</param>
 60        public void SetUpdateMode(UpdateMode updateMode)
 61        {
 11262            fetchScenesHandler.SetUpdateMode(updateMode);
 11263            markersContainer.gameObject.SetActive(updateMode == UpdateMode.FOREGROUND);
 11264        }
 65
 66        public void Dispose()
 67        {
 73768            fetchScenesHandler.OnScenesFetched -= OnScenesFetched;
 73769            userPositionHandler.OnPlayerCoordsChanged -= OnPlayerCoordsChanged;
 73770            CommonScriptableObjects.rendererState.OnChange -= OnRenderStateChanged;
 71
 73772            fetchScenesHandler.Dispose();
 73773            markersHandler.Dispose();
 73774            userPositionHandler.Dispose();
 73775        }
 76
 077        private void OnScenesFetched(List<HotScenesController.HotSceneInfo> sceneList) { markersHandler.SetMarkers(scene
 78
 35079        private void OnPlayerCoordsChanged(Vector2Int coords) { markersHandler.SetExclusionArea(coords, commsRadius); }
 80
 81        private void OnRenderStateChanged(bool current, bool prev)
 82        {
 11483            if (!current)
 384                return;
 85
 86            // NOTE: we start fetching scenes after the renderer is activated for the first time
 11187            CommonScriptableObjects.rendererState.OnChange -= OnRenderStateChanged;
 11188            fetchScenesHandler.Init();
 11189        }
 90    }
 91}