< Summary

Class:BIWSaveController
Assembly:BuilderInWorld
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/Scripts/Controllers/BIWSaveController.cs
Covered lines:25
Uncovered lines:27
Coverable lines:52
Total lines:113
Line coverage:48% (25 of 52)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BIWSaveController()0%2100%
GetSaveAttempsSinceLastSave()0%2100%
GetTimesSaved()0%2100%
Initialize(...)0%330100%
Dispose()0%12300%
ResetSaveTime()0%2100%
ResetNumberOfSaves()0%2100%
EnterEditMode(...)0%110100%
ExitEditMode()0%12300%
SetSaveActivation(...)0%6200%
CanSave()0%330100%
TryToSave()0%3.043083.33%
ForceSave()0%4.024088.89%
ConfirmPublishScene(...)0%2100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/Scripts/Controllers/BIWSaveController.cs

#LineLine coverage
 1using System;
 2using DCL;
 3using DCL.Builder;
 4using DCL.Builder.Manifest;
 5using DCL.Controllers;
 6using UnityEngine;
 7
 8public class BIWSaveController : BIWController, IBIWSaveController
 9{
 10    private const float MS_BETWEEN_SAVES = 5000f;
 11
 012    public int saveAttemptsSinceLastSave { get; set; } = 0;
 013    public int timesSaved { get; set; } = 0;
 14
 15    private BuilderInWorldBridge bridge;
 16
 17    private float nextTimeToSave;
 018    private bool canActivateSave = true;
 019    public int GetSaveAttempsSinceLastSave() { return saveAttemptsSinceLastSave; }
 020    public int GetTimesSaved() { return timesSaved; }
 21
 22    public override void Initialize(IContext context)
 23    {
 324        base.Initialize(context);
 25
 326        bridge = context.sceneReferences.biwBridgeGameObject.GetComponent<BuilderInWorldBridge>();
 327        if (bridge != null)
 328            bridge.OnKernelUpdated += TryToSave;
 29
 330        if ( context.editorContext.editorHUD != null)
 31        {
 332            context.editorContext.editorHUD.OnConfirmPublishAction += ConfirmPublishScene;
 33        }
 334    }
 35
 36    public override void Dispose()
 37    {
 038        base.Dispose();
 39
 040        if (bridge != null)
 041            bridge.OnKernelUpdated -= TryToSave;
 42
 043        if ( context.editorContext.editorHUD != null)
 44        {
 045            context.editorContext.editorHUD.OnConfirmPublishAction -= ConfirmPublishScene;
 46        }
 047    }
 48
 049    public void ResetSaveTime() { nextTimeToSave = 0; }
 50
 51    public void ResetNumberOfSaves()
 52    {
 053        saveAttemptsSinceLastSave = 0;
 054        timesSaved = 0;
 055    }
 56
 57    public override void EnterEditMode(IBuilderScene scene)
 58    {
 359        base.EnterEditMode(scene);
 360        nextTimeToSave = DCLTime.realtimeSinceStartup + MS_BETWEEN_SAVES / 1000f;
 361        ResetNumberOfSaves();
 362    }
 63
 64    public override void ExitEditMode()
 65    {
 066        if (saveAttemptsSinceLastSave > 0 && context.editorContext.publishController.HasUnpublishChanges())
 67        {
 068            ForceSave();
 069            ResetNumberOfSaves();
 70        }
 71
 072        base.ExitEditMode();
 073    }
 74
 75    public void SetSaveActivation(bool isActive, bool tryToSave = false)
 76    {
 077        canActivateSave = isActive;
 078        if (tryToSave)
 079            TryToSave();
 080    }
 81
 482    public bool CanSave() { return DCLTime.realtimeSinceStartup >= nextTimeToSave && isEditModeActive && canActivateSave
 83
 84    public void TryToSave()
 85    {
 186        if(!isEditModeActive)
 087            return;
 88
 189        saveAttemptsSinceLastSave++;
 90
 191        if (CanSave())
 192            ForceSave();
 193    }
 94
 95    public void ForceSave()
 96    {
 297        if (!isEditModeActive || !canActivateSave)
 098            return;
 99
 100        // We update the manifest with the current state
 2101        builderScene.UpdateManifestFromScene();
 102
 103        //We set the manifest on the builder server
 2104        context.builderAPIController.SetManifest(builderScene.manifest);
 105
 2106        nextTimeToSave = DCLTime.realtimeSinceStartup + MS_BETWEEN_SAVES / 1000f;
 2107        context.editorContext.editorHUD?.SceneSaved();
 2108        saveAttemptsSinceLastSave = 0;
 2109        timesSaved++;
 2110    }
 111
 0112    internal void ConfirmPublishScene(string sceneName, string sceneDescription, string sceneScreenshot) { ResetNumberOf
 113}