< Summary

Class:BIWSaveController
Assembly:BuilderInWorld
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/Scripts/Controllers/BIWSaveController.cs
Covered lines:0
Uncovered lines:52
Coverable lines:52
Total lines:113
Line coverage:0% (0 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%12300%
Dispose()0%12300%
ResetSaveTime()0%2100%
ResetNumberOfSaves()0%2100%
EnterEditMode(...)0%2100%
ExitEditMode()0%12300%
SetSaveActivation(...)0%6200%
CanSave()0%12300%
TryToSave()0%12300%
ForceSave()0%20400%
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    {
 024        base.Initialize(context);
 25
 026        bridge = context.sceneReferences.biwBridgeGameObject.GetComponent<BuilderInWorldBridge>();
 027        if (bridge != null)
 028            bridge.OnKernelUpdated += TryToSave;
 29
 030        if ( context.editorContext.editorHUD != null)
 31        {
 032            context.editorContext.editorHUD.OnConfirmPublishAction += ConfirmPublishScene;
 33        }
 034    }
 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    {
 059        base.EnterEditMode(scene);
 060        nextTimeToSave = DCLTime.realtimeSinceStartup + MS_BETWEEN_SAVES / 1000f;
 061        ResetNumberOfSaves();
 062    }
 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
 082    public bool CanSave() { return DCLTime.realtimeSinceStartup >= nextTimeToSave && isEditModeActive && canActivateSave
 83
 84    public void TryToSave()
 85    {
 086        if(!isEditModeActive)
 087            return;
 88
 089        saveAttemptsSinceLastSave++;
 90
 091        if (CanSave())
 092            ForceSave();
 093    }
 94
 95    public void ForceSave()
 96    {
 097        if (!isEditModeActive || !canActivateSave)
 098            return;
 99
 100        // We update the manifest with the current state
 0101        builderScene.UpdateManifestFromScene();
 102
 103        //We set the manifest on the builder server
 0104        context.builderAPIController.SetManifest(builderScene.manifest);
 105
 0106        nextTimeToSave = DCLTime.realtimeSinceStartup + MS_BETWEEN_SAVES / 1000f;
 0107        context.editorContext.editorHUD?.SceneSaved();
 0108        saveAttemptsSinceLastSave = 0;
 0109        timesSaved++;
 0110    }
 111
 0112    internal void ConfirmPublishScene(string sceneName, string sceneDescription, string sceneScreenshot) { ResetNumberOf
 113}