< Summary

Class:DCL.Camera.CameraController
Assembly:Camera
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Camera/CameraController.cs
Covered lines:56
Uncovered lines:8
Coverable lines:64
Total lines:168
Line coverage:87.5% (56 of 64)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Start()0%550100%
CameraController()0%110100%
OnFullscreenUIVisibilityChange(...)0%2.062075%
OnRenderingStateChanged(...)0%110100%
CameraBlocked_OnChange(...)0%6200%
OnCameraChangeAction(...)0%2.262060%
SetCameraMode(...)0%110100%
GetCameraMode(...)0%110100%
OnWorldReposition(...)0%110100%
Update()0%220100%
SetRotation(...)0%220100%
SetRotation(...)0%220100%
GetRotation()0%2.152066.67%
GetPosition()0%2100%
OnDestroy()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Camera/CameraController.cs

#LineLine coverage
 1using Cinemachine;
 2using DCL.Helpers;
 3using System.Collections.Generic;
 4using System.Linq;
 5using DCL;
 6using UnityEngine;
 7using UnityEngine.Serialization;
 8
 9namespace DCL.Camera
 10{
 11    public class CameraController : MonoBehaviour
 12    {
 13        [SerializeField]
 14        internal new UnityEngine.Camera camera;
 15
 16        private Transform cameraTransform;
 17
 18        [Header("Virtual Cameras")]
 19        [SerializeField]
 20        internal CinemachineBrain cameraBrain;
 21
 22        [SerializeField]
 23        internal CameraStateBase[] cameraModes;
 24
 25        [Header("InputActions")]
 26        [SerializeField]
 27        internal InputAction_Trigger cameraChangeAction;
 28
 29        internal Dictionary<CameraMode.ModeId, CameraStateBase> cachedModeToVirtualCamera;
 30
 1301031        private Vector3Variable cameraForward => CommonScriptableObjects.cameraForward;
 1301032        private Vector3Variable cameraRight => CommonScriptableObjects.cameraRight;
 1301033        private Vector3Variable cameraPosition => CommonScriptableObjects.cameraPosition;
 23134        private Vector3Variable worldOffset => CommonScriptableObjects.worldOffset;
 1301035        private BooleanVariable cameraIsBlending => CommonScriptableObjects.cameraIsBlending;
 36
 1337837        public CameraStateBase currentCameraState => cachedModeToVirtualCamera[CommonScriptableObjects.cameraMode];
 38
 39        [HideInInspector]
 40        public System.Action<CameraMode.ModeId> onSetCameraMode;
 41
 42        private void Start()
 43        {
 11644            cameraTransform = this.camera.transform;
 45
 11646            CommonScriptableObjects.rendererState.OnChange += OnRenderingStateChanged;
 11647            OnRenderingStateChanged(CommonScriptableObjects.rendererState.Get(), false);
 48
 11649            CommonScriptableObjects.cameraBlocked.OnChange += CameraBlocked_OnChange;
 50
 81251            cachedModeToVirtualCamera = cameraModes.ToDictionary(x => x.cameraModeId, x => x);
 52
 11653            using (var iterator = cachedModeToVirtualCamera.GetEnumerator())
 54            {
 46455                while (iterator.MoveNext())
 56                {
 34857                    iterator.Current.Value.Init(camera);
 58                }
 11659            }
 60
 11661            cameraChangeAction.OnTriggered += OnCameraChangeAction;
 11662            worldOffset.OnChange += OnWorldReposition;
 63
 11664            SetCameraMode(CommonScriptableObjects.cameraMode);
 65
 11666            if (CommonScriptableObjects.isFullscreenHUDOpen)
 10467                OnFullscreenUIVisibilityChange(CommonScriptableObjects.isFullscreenHUDOpen.Get(), !CommonScriptableObjec
 68
 11669            CommonScriptableObjects.isFullscreenHUDOpen.OnChange += OnFullscreenUIVisibilityChange;
 11670        }
 71
 31472        private float prevRenderScale = 1.0f;
 73
 74        void OnFullscreenUIVisibilityChange(bool visibleState, bool prevVisibleState)
 75        {
 10776            if (visibleState == prevVisibleState)
 077                return;
 78
 10779            camera.enabled = !visibleState;
 10780        }
 81
 40682        private void OnRenderingStateChanged(bool enabled, bool prevState) { camera.enabled = enabled; }
 83
 84        private void CameraBlocked_OnChange(bool current, bool previous)
 85        {
 086            foreach (CameraStateBase cam in cameraModes)
 87            {
 088                cam.OnBlock(current);
 89            }
 090        }
 91
 92        private void OnCameraChangeAction(DCLAction_Trigger action)
 93        {
 194            if (CommonScriptableObjects.cameraMode == CameraMode.ModeId.FirstPerson)
 95            {
 096                SetCameraMode(CameraMode.ModeId.ThirdPerson);
 097            }
 98            else
 99            {
 1100                SetCameraMode(CameraMode.ModeId.FirstPerson);
 101            }
 1102        }
 103
 104        public void SetCameraMode(CameraMode.ModeId newMode)
 105        {
 147106            currentCameraState.OnUnselect();
 147107            CommonScriptableObjects.cameraMode.Set(newMode);
 147108            currentCameraState.OnSelect();
 109
 147110            DCL.Interface.WebInterface.ReportCameraChanged(newMode);
 111
 147112            onSetCameraMode.Invoke(newMode);
 147113        }
 114
 115        public CameraStateBase GetCameraMode( CameraMode.ModeId mode )
 116        {
 1095117            return cameraModes.FirstOrDefault( x => x.cameraModeId == mode );
 118        }
 119
 6120        private void OnWorldReposition(Vector3 newValue, Vector3 oldValue) { transform.position += newValue - oldValue; 
 121
 122        private void Update()
 123        {
 13010124            cameraForward.Set(cameraTransform.forward);
 13010125            cameraRight.Set(cameraTransform.right);
 13010126            cameraPosition.Set(cameraTransform.position);
 13010127            cameraIsBlending.Set(cameraBrain.IsBlending);
 128
 13010129            currentCameraState?.OnUpdate();
 13010130        }
 131
 132        public void SetRotation(string setRotationPayload)
 133        {
 8134            var payload = Utils.FromJsonWithNulls<SetRotationPayload>(setRotationPayload);
 8135            currentCameraState?.OnSetRotation(payload);
 8136        }
 137
 64138        public void SetRotation(float x, float y, float z, Vector3? cameraTarget = null) { currentCameraState?.OnSetRota
 139
 140        public Vector3 GetRotation()
 141        {
 12142            if (currentCameraState != null)
 12143                return currentCameraState.OnGetRotation();
 144
 0145            return Vector3.zero;
 146        }
 147
 0148        public Vector3 GetPosition() { return CinemachineCore.Instance.GetActiveBrain(0).ActiveVirtualCamera.State.Final
 149
 150        private void OnDestroy()
 151        {
 115152            worldOffset.OnChange -= OnWorldReposition;
 115153            cameraChangeAction.OnTriggered -= OnCameraChangeAction;
 115154            CommonScriptableObjects.rendererState.OnChange -= OnRenderingStateChanged;
 115155            CommonScriptableObjects.cameraBlocked.OnChange -= CameraBlocked_OnChange;
 115156            CommonScriptableObjects.isFullscreenHUDOpen.OnChange -= OnFullscreenUIVisibilityChange;
 115157        }
 158
 159        [System.Serializable]
 160        public class SetRotationPayload
 161        {
 162            public float x;
 163            public float y;
 164            public float z;
 165            public Vector3? cameraTarget;
 166        }
 167    }
 168}