< Summary

Class:DCL.Skybox.SkyboxCamera
Assembly:ProceduralSkybox
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Rendering/ProceduralSkybox/ToolProceduralSkybox/Scripts/SkyboxCamera.cs
Covered lines:0
Uncovered lines:30
Coverable lines:30
Total lines:78
Line coverage:0% (0 of 30)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:6
Method coverage:0% (0 of 6)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SkyboxCamera()0%2100%
AssignTargetCamera(...)0%30500%
SetCameraEnabledState(...)0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Rendering/ProceduralSkybox/ToolProceduralSkybox/Scripts/SkyboxCamera.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using UnityEngine;
 3using UnityEngine.Rendering.Universal;
 4
 5namespace DCL.Skybox
 6{
 7    public class SkyboxCamera
 8    {
 9        private readonly GameObject skyboxCameraGO;
 10        private readonly SkyboxCameraBehaviour camBehavior;
 11
 12        private List<Camera> skyboxCameraStack;
 13
 014        public Camera CurrentCamera { get; private set; }
 015        public Camera BaseCamera { get; }
 16
 017        public SkyboxCamera()
 18        {
 19            // Make a new camera
 020            skyboxCameraGO = new GameObject("Skybox Camera")
 21                {
 22                    transform = {
 23                        position = Vector3.zero,
 24                        rotation = Quaternion.identity,
 25                    },
 26                };
 27
 28            // Attach camera component
 029            BaseCamera = skyboxCameraGO.AddComponent<Camera>();
 30
 031            UniversalAdditionalCameraData cameraData = BaseCamera.GetUniversalAdditionalCameraData();
 032            cameraData.renderShadows = false;
 33
 34            // This index is defined in UniversalRenderPipelineAsset
 35            // We are using a custom ForwardRenderer with less features that increase the performance and lowers the pas
 036            cameraData.SetRenderer(1);
 37
 038            BaseCamera.useOcclusionCulling = false;
 039            BaseCamera.cullingMask = 1 << LayerMask.NameToLayer("Skybox");
 040            BaseCamera.farClipPlane = 5000;
 41
 42            // Attach follow script
 043            camBehavior = skyboxCameraGO.AddComponent<SkyboxCameraBehaviour>();
 044        }
 45
 46        public void AssignTargetCamera(Transform mainCam)
 47        {
 048            if (mainCam == null)
 049                return;
 50
 051            CurrentCamera = mainCam.GetComponent<Camera>();
 052            UniversalAdditionalCameraData mainCameraData = CurrentCamera.GetUniversalAdditionalCameraData();
 53
 054            List<Camera> cameraStack = mainCameraData.renderType != CameraRenderType.Overlay ? mainCameraData.cameraStac
 55
 056            mainCameraData.renderType = CameraRenderType.Overlay;
 57
 058            if (skyboxCameraStack == null)
 59            {
 060                UniversalAdditionalCameraData cameraData = BaseCamera.GetUniversalAdditionalCameraData();
 061                skyboxCameraStack = cameraData.cameraStack;
 062                skyboxCameraStack.Add(CurrentCamera);
 63
 064                foreach (Camera camera in cameraStack)
 065                    skyboxCameraStack.Add(camera);
 66            }
 67            else
 068                skyboxCameraStack[0] = CurrentCamera;
 69
 070            camBehavior.AssignCamera(CurrentCamera, BaseCamera);
 071        }
 72
 73        public void SetCameraEnabledState(bool enabled)
 74        {
 075            BaseCamera.enabled = enabled;
 076        }
 77    }
 78}