< Summary

Class:DCL.Skybox.SkyboxDomeElements
Assembly:ProceduralSkybox
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Rendering/ProceduralSkybox/ToolProceduralSkybox/Scripts/Skybox3DElements/SkyboxDomeElements.cs
Covered lines:0
Uncovered lines:69
Coverable lines:69
Total lines:174
Line coverage:0% (0 of 69)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SkyboxDomeElements(...)0%2100%
Initialize()0%12300%
ResetObjects()0%6200%
GetDomeReference()0%6200%
InstantiateNewDome()0%6200%
GetOrderedGameobjectList(...)0%12300%
ApplyDomeConfigurations(...)0%20400%
ResolveCameraDependency(...)0%6200%

File(s)

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

#LineLine coverage
 1using System.Collections;
 2using System.Collections.Generic;
 3using DCL.Helpers;
 4using UnityEngine;
 5
 6namespace DCL.Skybox
 7{
 8    public class DomeReferences
 9    {
 10        public GameObject domeGO;
 11        public Material domeMat;
 12        public bool domeInUse;
 13    }
 14
 15    public class SkyboxDomeElements
 16    {
 17        private const string DOME_RESOURCES_PATH = "SkyboxPrefabs/Dome";
 18
 19        private readonly GameObject domeElements;
 20        private GameObject domePrefab;
 21        private FollowBehaviour followBehavior;
 22
 023        Queue<DomeReferences> domeObjects = new Queue<DomeReferences>();
 024        Queue<DomeReferences> activeDomeObjects = new Queue<DomeReferences>();
 25
 026        public SkyboxDomeElements(GameObject domeElements)
 27        {
 028            this.domeElements = domeElements;
 029            Initialize();
 030        }
 31
 32        private void Initialize()
 33        {
 034            if (domeElements == null)
 35            {
 036                Debug.LogError("Dome Elements Container is null");
 037                return;
 38            }
 39
 040            followBehavior = domeElements.GetOrCreateComponent<FollowBehaviour>();
 041            followBehavior.followPos = true;
 42
 043            for (int i = 0; i < domeElements.transform.childCount; i++)
 44            {
 045                DomeReferences dome = new DomeReferences();
 046                dome.domeGO = domeElements.transform.GetChild(i).gameObject;
 047                dome.domeGO.GetComponent<Renderer>().material = Object.Instantiate(MaterialReferenceContainer.i.domeMat)
 048                dome.domeMat = dome.domeGO.GetComponent<Renderer>().sharedMaterial;
 049                dome.domeGO.SetActive(false);
 050                domeObjects.Enqueue(dome);
 51            }
 052        }
 53
 54        public void ResetObjects()
 55        {
 056            while (activeDomeObjects.Count > 0)
 57            {
 058                DomeReferences dome = activeDomeObjects.Dequeue();
 059                dome.domeGO.SetActive(false);
 060                domeObjects.Enqueue(dome);
 61            }
 062        }
 63
 64        private DomeReferences GetDomeReference()
 65        {
 066            DomeReferences dome = null;
 067            if (domeObjects.Count <= 0)
 68            {
 069                dome = InstantiateNewDome();
 70            }
 71            else
 72            {
 073                dome = domeObjects.Dequeue();
 74            }
 75
 076            dome.domeGO.SetActive(true);
 77
 78            // Add to active objects
 079            activeDomeObjects.Enqueue(dome);
 080            return dome;
 81        }
 82
 83        private DomeReferences InstantiateNewDome()
 84        {
 085            if (domePrefab == null)
 86            {
 087                domePrefab = Resources.Load<GameObject>(DOME_RESOURCES_PATH);
 88            }
 89
 090            GameObject obj = GameObject.Instantiate<GameObject>(domePrefab);
 091            obj.layer = LayerMask.NameToLayer("Skybox");
 092            obj.name = "Dome";
 093            obj.transform.parent = domeElements.transform;
 094            obj.transform.localPosition = new Vector3(0, -0.7f, 0);
 095            obj.GetComponent<Renderer>().material = Object.Instantiate<Material>(MaterialReferenceContainer.i.domeMat);
 96
 097            DomeReferences dome = new DomeReferences();
 098            dome.domeGO = obj;
 099            dome.domeMat = obj.GetComponent<Renderer>().sharedMaterial;
 100
 0101            return dome;
 102        }
 103
 104        private List<DomeReferences> GetOrderedGameobjectList(List<Config3DDome> configList)
 105        {
 0106            ResetObjects();
 0107            List<DomeReferences> orderedList = new List<DomeReferences>();
 108            // make a list of domes for each active dome config
 109
 0110            for (int i = 0; i < configList.Count; i++)
 111            {
 0112                if (!configList[i].enabled)
 113                {
 114                    continue;
 115                }
 116
 0117                DomeReferences dome = GetDomeReference();
 118
 0119                orderedList.Insert(0, dome);
 120            }
 121
 0122            return orderedList;
 123        }
 124
 125        public void ApplyDomeConfigurations(SkyboxConfiguration config, float dayTime, float normalizedDayTime, Light di
 126        {
 0127            List<DomeReferences> domeReferences = GetOrderedGameobjectList(config.additional3Dconfig);
 128
 129            float percentage = normalizedDayTime * 100;
 0130            int domeCount = 0;
 131
 0132            for (int i = 0; i < config.additional3Dconfig.Count; i++)
 133            {
 0134                if (!config.additional3Dconfig[i].enabled)
 135                {
 136                    // Change all texture layer rendering to NotRendering
 137                    continue;
 138                }
 139
 140                // If dome is not active due to time, Increment dome number, close dome GO and continue
 0141                if (!config.additional3Dconfig[i].IsConfigActive(dayTime, cycleTime))
 142                {
 0143                    domeReferences[domeCount].domeGO.SetActive(false);
 0144                    domeCount++;
 0145                    continue;
 146                }
 147
 0148                domeReferences[domeCount].domeGO.SetActive(true);
 149
 150                // resize
 0151                domeReferences[domeCount].domeGO.transform.localScale = config.additional3Dconfig[i].domeRadius * Vector
 152
 0153                domeReferences[domeCount].domeGO.name = config.additional3Dconfig[i].layers.nameInEditor;
 154
 155                //Apply config
 156                //General Values
 0157                domeReferences[domeCount].domeMat.SetColor(SkyboxShaderUtils.LightTint, config.directionalLightLayer.tin
 0158                domeReferences[domeCount].domeMat.SetVector(SkyboxShaderUtils.LightDirection, directionalLightGO.transfo
 159
 160
 0161                TextureLayerFunctionality.ApplyTextureLayer(domeReferences[domeCount].domeMat, dayTime, normalizedDayTim
 0162                domeCount++;
 163            }
 0164        }
 165
 166        public void ResolveCameraDependency(Transform currentTransform)
 167        {
 0168            if (followBehavior != null)
 169            {
 0170                followBehavior.target = currentTransform.gameObject;
 171            }
 0172        }
 173    }
 174}