< Summary

Class:RenderProfileWorld
Assembly:RenderProfiles
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Rendering/Profiles/RenderProfileWorld.cs
Covered lines:20
Uncovered lines:15
Coverable lines:35
Total lines:112
Line coverage:57.1% (20 of 35)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
OnValidate()0%4.594066.67%
FillWithRenderSettings()0%6200%
Apply(...)0%4.034087.5%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Rendering/Profiles/RenderProfileWorld.cs

#LineLine coverage
 1using System;
 2using System.Collections;
 3using System.Collections.Generic;
 4using DCL;
 5using DCL.Helpers;
 6using UnityEngine;
 7using UnityEngine.Rendering;
 8
 9/// <summary>
 10/// RenderProfileWorld allows us to toggle between several global rendering configuration presets.
 11/// This is useful for events, setting day/night cycles, lerping between any of those, etc.
 12///
 13/// All the presets are stored in the RenderProfileManifest object.
 14/// </summary>
 15[CreateAssetMenu(menuName = "DCL/Rendering/Create World Profile", fileName = "RenderProfileWorld", order = 0)]
 16public class RenderProfileWorld : ScriptableObject
 17{
 18    [Header("Loading Blocker")] public GameObject loadingBlockerPrefab;
 19
 20    [Header("Ambient And Reflection")]
 21    [SerializeField]
 22    private Material skyboxMaterial;
 23
 24    [SerializeField] private Cubemap reflectionCubemap;
 25    [SerializeField] private Color skyColor;
 26    [SerializeField] private Color equatorColor;
 27    [SerializeField] private Color groundColor;
 28    [SerializeField] private Color fogColor;
 29
 30    [Header("Directional Light")]
 31    [SerializeField]
 32    private Color directionalColorLight;
 33
 34    [SerializeField] private Vector3 directionalColorAngle;
 35
 36    [Header("Misc")] public RenderProfileAvatar avatarProfile;
 37
 38#if UNITY_EDITOR
 39    public bool fillWithRenderSettings;
 40    public bool copyToRenderSettings;
 41
 42    //NOTE(Brian): Workaround to make an editor-time action.
 43    //             ContextMenu doesn't seem to work with ScriptableObjects.
 44    private void OnValidate()
 45    {
 346        if (fillWithRenderSettings)
 47        {
 048            FillWithRenderSettings();
 49        }
 50
 351        if (copyToRenderSettings)
 52        {
 053            Apply();
 54        }
 55
 356        fillWithRenderSettings = false;
 357        copyToRenderSettings = false;
 58
 359        if (RenderProfileManifest.i.currentProfile == this)
 60        {
 061            Apply();
 62        }
 363    }
 64
 65    public void FillWithRenderSettings()
 66    {
 067        skyboxMaterial = RenderSettings.skybox;
 068        equatorColor = RenderSettings.ambientEquatorColor;
 069        skyColor = RenderSettings.ambientSkyColor;
 070        groundColor = RenderSettings.ambientGroundColor;
 071        fogColor = RenderSettings.fogColor;
 72
 073        if (RenderSettings.sun != null)
 74        {
 075            directionalColorLight = RenderSettings.sun.color;
 076            directionalColorAngle = RenderSettings.sun.transform.rotation.eulerAngles;
 77        }
 78
 079        reflectionCubemap = RenderSettings.customReflection;
 080    }
 81#endif
 82
 83    public void Apply(bool verbose = false)
 84    {
 85
 67386        if (DataStore.i.skyboxConfig.useProceduralSkybox.Get())
 87        {
 088            return;
 89        }
 90
 67391        RenderSettings.customReflection = reflectionCubemap;
 67392        RenderSettings.ambientMode = AmbientMode.Trilight;
 93
 67394        RenderSettings.skybox = skyboxMaterial;
 67395        RenderSettings.ambientEquatorColor = equatorColor;
 67396        RenderSettings.ambientSkyColor = skyColor;
 67397        RenderSettings.ambientGroundColor = groundColor;
 98
 67399        RenderSettings.fogColor = fogColor;
 100
 673101        if (RenderSettings.sun != null)
 102        {
 125103            RenderSettings.sun.color = directionalColorLight;
 125104            RenderSettings.sun.transform.rotation = Quaternion.Euler(directionalColorAngle);
 105        }
 106
 673107        avatarProfile.Apply();
 108
 673109        if (verbose)
 0110            Debug.Log("Applying profile... " + name);
 673111    }
 112}