< 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
 11228        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>
 11236        public MapGlobalUsersPositionMarkerController(UserMarkerObject markerPrefab, Transform overlayContainer, Func<fl
 37        {
 11238            fetchScenesHandler = new FetchScenesHandler(UPDATE_INTERVAL_INITIAL, UPDATE_INTERVAL_FOREGROUND, UPDATE_INTE
 11239            markersHandler = new MarkersHandler(markerPrefab, overlayContainer, MAX_MARKERS, coordToMapPosFunc);
 11240            userPositionHandler = new UserPositionHandler();
 11241            markersContainer = overlayContainer;
 42
 11243            fetchScenesHandler.OnScenesFetched += OnScenesFetched;
 11244            userPositionHandler.OnPlayerCoordsChanged += OnPlayerCoordsChanged;
 11245            CommonScriptableObjects.rendererState.OnChange += OnRenderStateChanged;
 46
 11247            KernelConfig.i.EnsureConfigInitialized()
 48                        .Then(config =>
 49                        {
 11250                            commsRadius = (int) config.comms.commRadius + COMMS_RADIUS_THRESHOLD;
 11251                            OnPlayerCoordsChanged(userPositionHandler.playerCoords);
 11252                        });
 11253            OnRenderStateChanged(CommonScriptableObjects.rendererState.Get(), false);
 11254        }
 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        {
 11362            fetchScenesHandler.SetUpdateMode(updateMode);
 11363            markersContainer.gameObject.SetActive(updateMode == UpdateMode.FOREGROUND);
 11364        }
 65
 66        public void Dispose()
 67        {
 73868            fetchScenesHandler.OnScenesFetched -= OnScenesFetched;
 73869            userPositionHandler.OnPlayerCoordsChanged -= OnPlayerCoordsChanged;
 73870            CommonScriptableObjects.rendererState.OnChange -= OnRenderStateChanged;
 71
 73872            fetchScenesHandler.Dispose();
 73873            markersHandler.Dispose();
 73874            userPositionHandler.Dispose();
 73875        }
 76
 077        private void OnScenesFetched(List<HotScenesController.HotSceneInfo> sceneList) { markersHandler.SetMarkers(scene
 78
 46279        private void OnPlayerCoordsChanged(Vector2Int coords) { markersHandler.SetExclusionArea(coords, commsRadius); }
 80
 81        private void OnRenderStateChanged(bool current, bool prev)
 82        {
 11483            if (!current)
 284                return;
 85
 86            // NOTE: we start fetching scenes after the renderer is activated for the first time
 11287            CommonScriptableObjects.rendererState.OnChange -= OnRenderStateChanged;
 11288            fetchScenesHandler.Init();
 11289        }
 90    }
 91}