< Summary

Class:DCL.Builder.CameraController
Assembly:BuilderInWorld
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/Scripts/Cameras/CameraController.cs
Covered lines:35
Uncovered lines:7
Coverable lines:42
Total lines:109
Line coverage:83.3% (35 of 42)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
CameraController()0%110100%
Initialize(...)0%3.243070%
Dispose()0%110100%
TakeSceneScreenshot(...)0%110100%
TakeSceneScreenshot(...)0%110100%
TakeSceneAerialScreenshot(...)0%110100%
TakeSceneScreenshotFromResetPosition(...)0%110100%
ActivateCamera(...)0%4.074083.33%
DeactivateCamera()0%3.333066.67%
GetLastScreenshot()0%2100%
GetInitialCameraPosition(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/Scripts/Cameras/CameraController.cs

#LineLine coverage
 1using System.Collections;
 2using System.Collections.Generic;
 3using DCL.Builder;
 4using DCL.Camera;
 5using DCL.CameraTool;
 6using DCL.Configuration;
 7using DCL.Controllers;
 8using DCL.Helpers;
 9using UnityEngine;
 10
 11namespace DCL.Builder
 12{
 13    public class CameraController : ICameraController
 14    {
 515        private float initialEagleCameraHeight = 10f;
 516        private float initialEagleCameraDistance = 10f;
 17
 18        private CameraMode.ModeId avatarCameraModeBeforeEditing;
 19        private Camera.CameraController cameraController;
 20        internal IFreeCameraMovement freeCameraController;
 21        internal IScreenshotCameraController screenshotCameraController;
 22        internal IContext context;
 23        internal Texture2D lastScreenshot;
 24
 25        internal Vector3 initialCameraPosition;
 26        internal Vector3 initialPointToLookAt;
 27
 28        public void Initialize(IContext context)
 29        {
 530            this.context = context;
 531            if (context.sceneReferences.cameraController != null)
 32            {
 033                if (context.sceneReferences.cameraController.GetComponent<Camera.CameraController>().TryGetCameraStateBy
 034                    freeCameraController = (FreeCameraMovement) cameraState;
 35
 036                cameraController = context.sceneReferences.cameraController.GetComponent<Camera.CameraController>();
 37            }
 38
 539            initialEagleCameraHeight = context.editorContext.godModeDynamicVariablesAsset.initialEagleCameraHeight;
 540            initialEagleCameraDistance = context.editorContext.godModeDynamicVariablesAsset.initialEagleCameraDistance;
 41
 542            screenshotCameraController = new ScreenshotCameraController();
 543            screenshotCameraController.Init(context);
 544        }
 45
 46        public void Dispose()
 47        {
 548            DeactivateCamera();
 549            screenshotCameraController.Dispose();
 550        }
 51
 52        public void TakeSceneScreenshot(IScreenshotCameraController.OnSnapshotsReady onSuccess)
 53        {
 154           screenshotCameraController.TakeSceneScreenshot(onSuccess);
 155        }
 56
 57        public void TakeSceneScreenshot(Vector3 camPosition, Vector3 pointToLookAt, int width, int height, IScreenshotCa
 58        {
 159            screenshotCameraController.TakeSceneScreenshot(camPosition,pointToLookAt,width,height,onSuccess);
 160        }
 61
 62        public void TakeSceneAerialScreenshot(IParcelScene parcelScene, IScreenshotCameraController.OnSnapshotsReady onS
 63        {
 164           screenshotCameraController.TakeSceneAerialScreenshot(parcelScene,onSuccess);
 165        }
 66
 67        public void TakeSceneScreenshotFromResetPosition(IScreenshotCameraController.OnSnapshotsReady onSuccess)
 68        {
 169           screenshotCameraController.TakeSceneScreenshot(initialCameraPosition,initialPointToLookAt,onSuccess);
 170        }
 71
 72        public void ActivateCamera(IParcelScene parcelScene)
 73        {
 174            freeCameraController.gameObject.SetActive(true);
 175            Vector3 pointToLookAt = BIWUtils.CalculateUnityMiddlePoint(parcelScene);
 176            Vector3 cameraPosition = GetInitialCameraPosition(parcelScene);
 77
 178            initialPointToLookAt = pointToLookAt;
 179            initialCameraPosition = cameraPosition;
 80
 181            freeCameraController.SetPosition(cameraPosition);
 182            freeCameraController.LookAt(pointToLookAt);
 183            freeCameraController.SetResetConfiguration(cameraPosition, pointToLookAt);
 84
 185            if (cameraController != null && cameraController.currentCameraState.cameraModeId != CameraMode.ModeId.Buildi
 086                avatarCameraModeBeforeEditing = cameraController.currentCameraState.cameraModeId;
 87
 188            cameraController?.SetCameraMode(CameraMode.ModeId.BuildingToolGodMode);
 089        }
 90
 91        public void DeactivateCamera()
 92        {
 593            if (!DataStore.i.common.isApplicationQuitting.Get())
 594                cameraController?.SetCameraMode(avatarCameraModeBeforeEditing);
 095        }
 96
 097        public Texture2D GetLastScreenshot() { return lastScreenshot; }
 98
 99        internal Vector3 GetInitialCameraPosition(IParcelScene parcelScene)
 100        {
 1101            Vector3 middlePoint = BIWUtils.CalculateUnityMiddlePoint(parcelScene);
 1102            Vector3 direction = (parcelScene.GetSceneTransform().position - middlePoint).normalized;
 103
 1104            return parcelScene.GetSceneTransform().position
 105                   + direction * initialEagleCameraDistance
 106                   + Vector3.up * initialEagleCameraHeight;
 107        }
 108    }
 109}