< Summary

Class:RenderingController
Assembly:Rendering
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/Rendering/RenderingController.cs
Covered lines:0
Uncovered lines:68
Coverable lines:68
Total lines:149
Line coverage:0% (0 of 68)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
RenderingController()0%2100%
Awake()0%2100%
DecoupleLoadingScreenVisibilityChange(...)0%6200%
OnDestroy()0%2100%
DeactivateRendering()0%6200%
DeactivateRendering_Internal()0%12300%
ActivateRendering()0%12300%
FlagsSet(...)0%2100%
ForceActivateRendering()0%6200%
ActivateRendering_Internal(...)0%30500%
ActivateRendering_Internal()0%12300%
AddLock(...)0%30500%
RemoveLock(...)0%20400%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WorldRuntime/Rendering/RenderingController.cs

#LineLine coverage
 1using DCL;
 2using DCL.Configuration;
 3using DCL.Helpers;
 4using DCL.Interface;
 5using System;
 6using UnityEngine;
 7
 8public class RenderingController : MonoBehaviour
 9{
 010    public static float firstActivationTime { get; private set; }
 11    private bool firstActivationTimeHasBeenSet;
 12    private readonly bool VERBOSE = false;
 13
 014    public CompositeLock renderingActivatedAckLock = new ();
 15
 016    private bool activatedRenderingBefore { get; set; }
 017    private bool isDecoupledLoadingScreenEnabled => DataStore.i.featureFlags.flags.Get().IsFeatureEnabled(DataStore.i.fe
 018    private bool isSignUpFlow => DataStore.i.common.isSignUpFlow.Get();
 19
 20    private DataStoreRef<DataStore_LoadingScreen> dataStore_LoadingScreenRef;
 21
 22    private void Awake()
 23    {
 024        CommonScriptableObjects.rendererState.OnLockAdded += AddLock;
 025        CommonScriptableObjects.rendererState.OnLockRemoved += RemoveLock;
 026        CommonScriptableObjects.rendererState.Set(false);
 27
 028        dataStore_LoadingScreenRef.Ref.decoupledLoadingHUD.visible.OnChange += DecoupleLoadingScreenVisibilityChange;
 029        DecoupleLoadingScreenVisibilityChange(true, true);
 030    }
 31
 32    private void DecoupleLoadingScreenVisibilityChange(bool visible, bool _)
 33    {
 034        if (visible)
 035            DeactivateRendering_Internal();
 36        else
 37            //Coming-from-kernel condition. If we are on signup flow, then we must force the ActivateRendering
 038            ActivateRendering_Internal(isSignUpFlow);
 039    }
 40
 41    private void OnDestroy()
 42    {
 043        CommonScriptableObjects.rendererState.OnLockAdded -= AddLock;
 044        CommonScriptableObjects.rendererState.OnLockRemoved -= RemoveLock;
 045    }
 46
 47    [ContextMenu("Disable Rendering")]
 48    public void DeactivateRendering()
 49    {
 050        if (isDecoupledLoadingScreenEnabled) return;
 51
 052        DeactivateRendering_Internal();
 053    }
 54
 55    private void DeactivateRendering_Internal()
 56    {
 057        if (!CommonScriptableObjects.rendererState.Get()) return;
 58
 059        ParcelSettings.VISUAL_LOADING_ENABLED = false;
 060        CommonScriptableObjects.rendererState.Set(false);
 61
 062        if (!isDecoupledLoadingScreenEnabled)
 063            WebInterface.ReportControlEvent(new WebInterface.DeactivateRenderingACK());
 064    }
 65
 66    [ContextMenu("Enable Rendering")]
 67    public void ActivateRendering()
 68    {
 69        //Have to add this check since flags are not initialized when this is called first time by kernel
 070        if (DataStore.i.featureFlags.flags.Get().flags.Count.Equals(0))
 71        {
 072            DataStore.i.featureFlags.flags.OnChange += FlagsSet;
 073            return;
 74        }
 75
 076        if (isDecoupledLoadingScreenEnabled) return;
 77
 078        ActivateRendering_Internal(forceActivate: false);
 079    }
 80
 81    private void FlagsSet(FeatureFlag current, FeatureFlag previous)
 82    {
 083        ActivateRendering();
 084        DataStore.i.featureFlags.flags.OnChange -= FlagsSet;
 085    }
 86
 87    public void ForceActivateRendering()
 88    {
 089        if (isDecoupledLoadingScreenEnabled) return;
 90
 091        ActivateRendering_Internal(forceActivate: true);
 092    }
 93
 94    public void ActivateRendering_Internal(bool forceActivate)
 95    {
 096        if (CommonScriptableObjects.rendererState.Get()) return;
 97
 098        if (!firstActivationTimeHasBeenSet)
 99        {
 0100            firstActivationTime = Time.realtimeSinceStartup;
 0101            firstActivationTimeHasBeenSet = true;
 102        }
 103
 0104        if (!forceActivate && !renderingActivatedAckLock.isUnlocked)
 105        {
 0106            renderingActivatedAckLock.OnAllLocksRemoved -= ActivateRendering_Internal;
 0107            renderingActivatedAckLock.OnAllLocksRemoved += ActivateRendering_Internal;
 0108            return;
 109        }
 110
 0111        ActivateRendering_Internal();
 0112    }
 113
 114    private void ActivateRendering_Internal()
 115    {
 0116        renderingActivatedAckLock.OnAllLocksRemoved -= ActivateRendering_Internal;
 117
 0118        if (!activatedRenderingBefore)
 119        {
 0120            Utils.UnlockCursor();
 0121            activatedRenderingBefore = true;
 122        }
 123
 0124        ParcelSettings.VISUAL_LOADING_ENABLED = true;
 0125        CommonScriptableObjects.rendererState.Set(true);
 126
 0127        if (!isDecoupledLoadingScreenEnabled)
 0128            WebInterface.ReportControlEvent(new WebInterface.ActivateRenderingACK());
 0129    }
 130
 131    private void AddLock(object id)
 132    {
 0133        if (CommonScriptableObjects.rendererState.Get())
 0134            return;
 135
 0136        if (VERBOSE)
 0137            Debug.Log("Add lock: " + id);
 138
 0139        renderingActivatedAckLock.AddLock(id);
 0140    }
 141
 142    private void RemoveLock(object id)
 143    {
 0144        if (VERBOSE)
 0145            Debug.Log("remove lock: " + id);
 146
 0147        renderingActivatedAckLock.RemoveLock(id);
 0148    }
 149}