< Summary

Class:RenderProfileWorld
Assembly:RenderProfiles
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Rendering/Profiles/RenderProfileWorld.cs
Covered lines:19
Uncovered lines:14
Coverable lines:33
Total lines:105
Line coverage:57.5% (19 of 33)
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%33092.86%

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")] [SerializeField]
 21    private Material skyboxMaterial;
 22
 23    [SerializeField] private Cubemap reflectionCubemap;
 24    [SerializeField] private Color skyColor;
 25    [SerializeField] private Color equatorColor;
 26    [SerializeField] private Color groundColor;
 27    [SerializeField] private Color fogColor;
 28
 29    [Header("Directional Light")] [SerializeField]
 30    private Color directionalColorLight;
 31
 32    [SerializeField] private Vector3 directionalColorAngle;
 33
 34    [Header("Misc")] public RenderProfileAvatar avatarProfile;
 35
 36#if UNITY_EDITOR
 37    public bool fillWithRenderSettings;
 38    public bool copyToRenderSettings;
 39
 40    //NOTE(Brian): Workaround to make an editor-time action.
 41    //             ContextMenu doesn't seem to work with ScriptableObjects.
 42    private void OnValidate()
 43    {
 344        if (fillWithRenderSettings)
 45        {
 046            FillWithRenderSettings();
 47        }
 48
 349        if (copyToRenderSettings)
 50        {
 051            Apply();
 52        }
 53
 354        fillWithRenderSettings = false;
 355        copyToRenderSettings = false;
 56
 357        if (RenderProfileManifest.i.currentProfile == this)
 58        {
 059            Apply();
 60        }
 361    }
 62
 63    public void FillWithRenderSettings()
 64    {
 065        skyboxMaterial = RenderSettings.skybox;
 066        equatorColor = RenderSettings.ambientEquatorColor;
 067        skyColor = RenderSettings.ambientSkyColor;
 068        groundColor = RenderSettings.ambientGroundColor;
 069        fogColor = RenderSettings.fogColor;
 70
 071        if (RenderSettings.sun != null)
 72        {
 073            directionalColorLight = RenderSettings.sun.color;
 074            directionalColorAngle = RenderSettings.sun.transform.rotation.eulerAngles;
 75        }
 76
 077        reflectionCubemap = RenderSettings.customReflection;
 078    }
 79#endif
 80
 81    public void Apply(bool verbose = false)
 82    {
 66683        RenderSettings.ambientMode = AmbientMode.Trilight;
 84
 66685        RenderSettings.skybox = skyboxMaterial;
 66686        RenderSettings.ambientEquatorColor = equatorColor;
 66687        RenderSettings.ambientSkyColor = skyColor;
 66688        RenderSettings.ambientGroundColor = groundColor;
 89
 66690        RenderSettings.fogColor = fogColor;
 91
 66692        if (RenderSettings.sun != null)
 93        {
 66694            RenderSettings.sun.color = directionalColorLight;
 66695            RenderSettings.sun.transform.rotation = Quaternion.Euler(directionalColorAngle);
 96        }
 97
 66698        RenderSettings.customReflection = reflectionCubemap;
 99
 666100        avatarProfile.Apply();
 101
 666102        if (verbose)
 0103            Debug.Log("Applying profile... " + name);
 666104    }
 105}