< Summary

Class:DCL.Components.CameraModeAreasController
Assembly:CameraModeArea
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/CameraModeArea/CameraModeAreasController.cs
Covered lines:25
Uncovered lines:2
Coverable lines:27
Total lines:71
Line coverage:92.5% (25 of 27)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
CameraModeAreasController()0%110100%
AddInsideArea(...)0%220100%
RemoveInsideArea(...)0%4.024090%
ChangeAreaMode(...)0%220100%
ResetCameraMode()0%110100%
IsTheActivelyAffectingArea(...)0%2.062075%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Components/CameraModeArea/CameraModeAreasController.cs

#LineLine coverage
 1using System.Collections.Generic;
 2
 3namespace DCL.Components
 4{
 5    internal class CameraModeAreasController
 6    {
 7        private CameraMode.ModeId initialCameraMode;
 28        private readonly List<ICameraModeArea> insideAreasList = new List<ICameraModeArea>();
 9
 10        public void AddInsideArea(in ICameraModeArea area)
 11        {
 1312            if (insideAreasList.Count == 0)
 13            {
 814                initialCameraMode = CommonScriptableObjects.cameraMode.Get();
 815                CommonScriptableObjects.cameraModeInputLocked.Set(true);
 16            }
 17
 1318            CommonScriptableObjects.cameraMode.Set(area.cameraMode);
 1319            insideAreasList.Add(area);
 1320        }
 21
 22        public void RemoveInsideArea(in ICameraModeArea area)
 23        {
 1324            int affectingAreasCount = insideAreasList.Count;
 25
 1326            if (affectingAreasCount == 0)
 27            {
 028                return;
 29            }
 30
 1331            if (affectingAreasCount == 1)
 32            {
 33                // reset to initial state of camera mode
 834                ResetCameraMode();
 835            }
 536            else if (IsTheActivelyAffectingArea(area))
 37            {
 38                // set camera mode to the previous area the player is in
 139                CommonScriptableObjects.cameraMode.Set(insideAreasList[affectingAreasCount - 2].cameraMode);
 40            }
 41
 1342            insideAreasList.Remove(area);
 1343        }
 44
 45        public void ChangeAreaMode(in ICameraModeArea area, in CameraMode.ModeId mode)
 46        {
 247            if (IsTheActivelyAffectingArea(area))
 48            {
 249                CommonScriptableObjects.cameraMode.Set(mode);
 50            }
 251        }
 52
 53        private void ResetCameraMode()
 54        {
 855            CommonScriptableObjects.cameraMode.Set(initialCameraMode);
 856            CommonScriptableObjects.cameraModeInputLocked.Set(false);
 857        }
 58
 59        private bool IsTheActivelyAffectingArea(in ICameraModeArea area)
 60        {
 761            int affectingAreasCount = insideAreasList.Count;
 62
 763            if (affectingAreasCount == 0)
 64            {
 065                return false;
 66            }
 67
 768            return insideAreasList[affectingAreasCount - 1] == area;
 69        }
 70    }
 71}