< Summary

Class:BIWPublishController
Assembly:BuilderInWorld
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/BuilderMode/Controllers/BIWPublishController.cs
Covered lines:11
Uncovered lines:46
Coverable lines:57
Total lines:119
Line coverage:19.2% (11 of 57)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
BIWPublishController()0%110100%
Init()0%8.125050%
FrameUpdate()0%6200%
OnDestroy()0%12300%
CanPublish()0%4.034087.5%
CheckPublishConditions()0%42600%
StartPublishFlow()0%6200%
StartPublishScene(...)0%2100%
PublishEnd(...)0%20400%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/BuilderMode/Controllers/BIWPublishController.cs

#LineLine coverage
 1using UnityEngine;
 2
 3public class BIWPublishController : BIWController
 4{
 5    public BuilderInWorldEntityHandler builderInWorldEntityHandler;
 6    public BuilderInWorldBridge builderInWorldBridge;
 7    public BIWCreatorController biwCreatorController;
 8
 9    private int checkerSceneLimitsOptimizationCounter = 0;
 10
 11    private const int FRAMES_BEETWEN_UPDATES = 10;
 12    private const string FEEDBACK_MESSAGE_ENTITY_ERROR = "Some entities have errors (marked as pink cubes).";
 13    private const string FEEDBACK_MESSAGE_OUTSIDE_BOUNDARIES = "Some entities are outside of the Scene boundaries.";
 14    private const string FEEDBACK_MESSAGE_TOO_MANY_ENTITIES = "Too many entities in the scene. Check scene limits.";
 15
 19816    private bool reportSceneLimitsOverpassedAnalytic = true;
 17    private float startPublishingTimestamp = 0;
 18
 19    public override void Init()
 20    {
 921        if (HUDController.i?.builderInWorldMainHud != null)
 22        {
 023            HUDController.i.builderInWorldMainHud.OnPublishAction += StartPublishFlow;
 024            HUDController.i.builderInWorldMainHud.OnConfirmPublishAction += StartPublishScene;
 25        }
 926        if (builderInWorldBridge != null)
 027            builderInWorldBridge.OnPublishEnd += PublishEnd;
 928    }
 29
 30    protected override void FrameUpdate()
 31    {
 032        base.FrameUpdate();
 033        if (checkerSceneLimitsOptimizationCounter >= FRAMES_BEETWEN_UPDATES)
 34        {
 035            checkerSceneLimitsOptimizationCounter = 0;
 036            CheckPublishConditions();
 037        }
 38        else
 39        {
 040            checkerSceneLimitsOptimizationCounter++;
 41        }
 042    }
 43
 44    private void OnDestroy()
 45    {
 046        if (HUDController.i.builderInWorldMainHud != null)
 47        {
 048            HUDController.i.builderInWorldMainHud.OnPublishAction -= StartPublishFlow;
 049            HUDController.i.builderInWorldMainHud.OnConfirmPublishAction -= StartPublishScene;
 50        }
 051        if (builderInWorldBridge != null)
 052            builderInWorldBridge.OnPublishEnd -= PublishEnd;
 053    }
 54
 55    public bool CanPublish()
 56    {
 357        if (biwCreatorController.IsAnyErrorOnEntities())
 058            return false;
 59
 360        if (!sceneToEdit.metricsController.IsInsideTheLimits())
 161            return false;
 62
 263        if (!builderInWorldEntityHandler.AreAllEntitiesInsideBoundaries())
 164            return false;
 65
 166        reportSceneLimitsOverpassedAnalytic = true;
 167        return true;
 68    }
 69
 70    void CheckPublishConditions()
 71    {
 072        if (HUDController.i.builderInWorldMainHud is null)
 073            return;
 74
 075        string feedbackMessage = "";
 076        if (biwCreatorController.IsAnyErrorOnEntities())
 77        {
 078            feedbackMessage = FEEDBACK_MESSAGE_ENTITY_ERROR;
 079        }
 080        else if (!builderInWorldEntityHandler.AreAllEntitiesInsideBoundaries())
 81        {
 082            feedbackMessage = FEEDBACK_MESSAGE_OUTSIDE_BOUNDARIES;
 083        }
 084        else if (!sceneToEdit.metricsController.IsInsideTheLimits())
 85        {
 086            feedbackMessage = FEEDBACK_MESSAGE_TOO_MANY_ENTITIES;
 087            if (reportSceneLimitsOverpassedAnalytic)
 88            {
 089                BIWAnalytics.SceneLimitsOverPassed(sceneToEdit.metricsController.GetModel());
 090                reportSceneLimitsOverpassedAnalytic = false;
 91            }
 92        }
 93
 094        HUDController.i.builderInWorldMainHud.SetPublishBtnAvailability(CanPublish(), feedbackMessage);
 095    }
 96
 97    private void StartPublishFlow()
 98    {
 099        if (!CanPublish())
 0100            return;
 101
 0102        HUDController.i.builderInWorldMainHud.PublishStart();
 0103    }
 104
 105    private void StartPublishScene(string sceneName, string sceneDescription, string sceneScreenshot)
 106    {
 0107        startPublishingTimestamp = Time.realtimeSinceStartup;
 0108        BIWAnalytics.StartScenePublish(sceneToEdit.metricsController.GetModel());
 0109        builderInWorldBridge.PublishScene(sceneToEdit, sceneName, sceneDescription, sceneScreenshot);
 0110    }
 111
 112    private void PublishEnd(bool isOk, string message)
 113    {
 0114        if (HUDController.i.builderInWorldMainHud != null)
 0115            HUDController.i.builderInWorldMainHud.PublishEnd(isOk, message);
 0116        string successString = isOk ? "Success" : message;
 0117        BIWAnalytics.EndScenePublish(sceneToEdit.metricsController.GetModel(), successString, Time.realtimeSinceStartup 
 0118    }
 119}