< Summary

Class:BuildModeHUDController
Assembly:BuildModeHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuildModeHUD/Scripts/BuildModeHUDController.cs
Covered lines:239
Uncovered lines:52
Coverable lines:291
Total lines:642
Line coverage:82.1% (239 of 291)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Initialize()0%110100%
Initialize(...)0%110100%
CreateBuildModeControllers()0%110100%
CreateMainView()0%220100%
ConfigureSceneCatalogController()0%110100%
ConfigureEntityInformationController()0%110100%
ConfigureFirstPersonModeController()0%110100%
ConfigureShortcutsController()0%110100%
ConfigureDragAndDropSceneObjectController()0%110100%
ConfigurePublishBtnController()0%110100%
ConfigureInspectorBtnController()0%110100%
ConfigureCatalogBtnController()0%110100%
ConfigureInspectorController()0%110100%
ConfigureTopActionsButtonsController()0%110100%
ConfigureSaveHUDController()0%110100%
ConfigureNewProjectDetailsController()0%110100%
ConfigurePublicationDetailsController()0%110100%
ConfigureQuickBarController()0%110100%
QuickBarCatalogItemAssigned(...)0%2100%
SceneSaved()0%2100%
SetBuilderProjectInfo(...)0%220100%
NewProjectStart(...)0%110100%
SaveSceneInfo()0%440100%
CancelNewProjectDetails()0%110100%
SetBuilderProjectScreenshot(...)0%2100%
PublishStart()0%110100%
ConfigureConfirmationModal(...)0%110100%
ConfirmPublicationDetails()0%110100%
CancelPublicationDetails()0%110100%
CancelPublishModal(...)0%2.012085.71%
ConfirmPublishModal(...)0%5.015091.67%
FakePublishProgress()0%3.143075%
ExitStart()0%3.143075%
CancelExitModal(...)0%2.022083.33%
ConfirmExitModal(...)0%3.033085.71%
UnsubscribeConfirmationModal()0%110100%
PublishEnd(...)0%2.262060%
SetGizmosActive(...)0%2100%
SetParcelScene(...)0%110100%
SetPublishBtnAvailability(...)0%110100%
GetCatalogSectionSelected()0%2100%
ShowTooltipForCatalogItemAdapter(...)0%2100%
RefreshCatalogAssetPack()0%110100%
RefreshCatalogContent()0%110100%
StopInput()0%6200%
CatalogItemSelected(...)0%220100%
CatalogItemDropped(...)0%6200%
ToggleCatalogIfExpanded()0%2.152066.67%
SetVisibilityOfCatalog(...)0%330100%
ChangeVisibilityOfCatalog()0%110100%
ShowSceneLimitsPassed()0%6200%
UpdateSceneLimitInfo()0%110100%
ChangeVisibilityOfSceneInfo(...)0%110100%
ChangeVisibilityOfSceneInfo()0%110100%
ActivateFirstPersonModeUI()0%220100%
ActivateGodModeUI()0%220100%
EntityInformationSetEntity(...)0%110100%
ShowEntityInformation(...)0%220100%
HideEntityInformation()0%2.032080%
OnEntityInformationDisable()0%6200%
SetEntityList(...)0%220100%
ChangeVisibilityOfEntityList()0%440100%
ClearEntityList()0%110100%
ChangeVisibilityOfControls()0%110100%
ChangeVisibilityOfUI()0%2100%
ChangeVisibilityOfExtraBtns()0%110100%
HideExtraBtns()0%6200%
SetActionsButtonsInteractable(...)0%2100%
SetSnapModeActive(...)0%110100%
SetUndoButtonInteractable(...)0%110100%
SetRedoButtonInteractable(...)0%110100%
SetVisibility(...)0%6.25063.64%
Dispose()0%3.073080%
ToggleVisibility()0%2100%
IsVisible()0%2.152066.67%
CreateView()0%110100%
UpdateEntitiesSelection(...)0%2100%
SetVisibilityOfInspector(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuildModeHUD/Scripts/BuildModeHUDController.cs

#LineLine coverage
 1using DCL.Configuration;
 2using DCL.Controllers;
 3using System;
 4using System.Collections;
 5using System.Collections.Generic;
 6using DCL;
 7using UnityEngine;
 8using UnityEngine.EventSystems;
 9
 10public class BuildModeHUDController : IHUD
 11{
 12    public event Action OnChangeModeAction;
 13    public event Action OnTranslateSelectedAction;
 14    public event Action OnRotateSelectedAction;
 15    public event Action OnScaleSelectedAction;
 16    public event Action OnResetAction;
 17    public event Action OnResetCameraAction;
 18    public event Action OnUndoAction;
 19    public event Action OnRedoAction;
 20    public event Action OnDuplicateSelectedAction;
 21    public event Action OnDeleteSelectedAction;
 22    public event Action OnEntityListVisible;
 23    public event Action OnStopInput;
 24    public event Action OnResumeInput;
 25    public event Action OnTutorialAction;
 26    public event Action OnPublishAction;
 27    public event Action<string, string, string> OnSaveSceneInfoAction;
 28    public event Action<string, string, string> OnConfirmPublishAction;
 29    public event Action OnStartExitAction;
 30    public event Action OnLogoutAction;
 31    public event Action OnChangeSnapModeAction;
 32    public event Action<CatalogItem> OnCatalogItemSelected;
 33    public event Action<CatalogItem> OnCatalogItemDropped;
 34    public event Action<BIWEntity> OnEntityClick;
 35    public event Action<BIWEntity> OnEntityDelete;
 36    public event Action<BIWEntity> OnEntityLock;
 37    public event Action<BIWEntity> OnEntityChangeVisibility;
 38    public event Action<BIWEntity, string> OnEntityRename;
 39    public event Action<BIWEntity> OnEntitySmartItemComponentUpdate;
 40    public event Action<Vector3> OnSelectedObjectPositionChange;
 41    public event Action<Vector3> OnSelectedObjectRotationChange;
 42    public event Action<Vector3> OnSelectedObjectScaleChange;
 43    public event Action OnCatalogOpen; // Note(Adrian): This is used right now for tutorial purposes
 44
 45    internal IBuildModeHUDView view;
 46
 47    internal bool areExtraButtonsVisible = false;
 48    internal bool isControlsVisible = false;
 49    internal bool isEntityListVisible = false;
 50    internal bool isSceneLimitInfoVisibile = false;
 51    internal bool isCatalogOpen = false;
 52
 53    internal BuildModeHUDInitializationModel controllers;
 54
 55    private Coroutine publishProgressCoroutine = null;
 56    private float timeFromLastClickOnExtraButtons = 0f;
 57
 58    public void Initialize()
 59    {
 2660        CreateBuildModeControllers();
 2661        CreateMainView();
 2662        ConfigureSceneCatalogController();
 2663        ConfigureEntityInformationController();
 2664        ConfigureFirstPersonModeController();
 2665        ConfigureShortcutsController();
 2666        ConfigureDragAndDropSceneObjectController();
 2667        ConfigurePublishBtnController();
 2668        ConfigureInspectorBtnController();
 2669        ConfigureCatalogBtnController();
 2670        ConfigureInspectorController();
 2671        ConfigureTopActionsButtonsController();
 2672        ConfigureSaveHUDController();
 2673        ConfigureNewProjectDetailsController();
 2674        ConfigurePublicationDetailsController();
 2675        ConfigureQuickBarController();
 2676    }
 77
 78    public void Initialize(BuildModeHUDInitializationModel controllers)
 79    {
 4580        this.controllers = controllers;
 81
 4582        CreateMainView();
 4583    }
 84
 85    internal void CreateBuildModeControllers()
 86    {
 2787        controllers = new BuildModeHUDInitializationModel
 88        {
 89            tooltipController = new TooltipController(),
 90            feedbackTooltipController = new TooltipController(),
 91            sceneCatalogController = new SceneCatalogController(),
 92            quickBarController = new QuickBarController(),
 93            entityInformationController = new EntityInformationController(),
 94            firstPersonModeController = new FirstPersonModeController(),
 95            shortcutsController = new ShortcutsController(),
 96            publishPopupController = new PublishPopupController(),
 97            dragAndDropSceneObjectController = new DragAndDropSceneObjectController(),
 98            publishBtnController = new PublishBtnController(),
 99            inspectorBtnController = new InspectorBtnController(),
 100            catalogBtnController = new CatalogBtnController(),
 101            inspectorController = new InspectorController(),
 102            buildModeConfirmationModalController = new BuildModeConfirmationModalController(),
 103            topActionsButtonsController = new TopActionsButtonsController(),
 104            saveHUDController = new SaveHUDController(),
 105            newProjectDetailsController = new PublicationDetailsController(),
 106            publicationDetailsController = new PublicationDetailsController()
 107        };
 27108    }
 109
 110    internal void CreateMainView()
 111    {
 72112        view = CreateView();
 113
 72114        if (view.viewGO != null)
 26115            view.viewGO.SetActive(false);
 116
 72117        view.Initialize(controllers);
 72118    }
 119
 120    private void ConfigureSceneCatalogController()
 121    {
 26122        controllers.sceneCatalogController.OnHideCatalogClicked += ChangeVisibilityOfCatalog;
 26123        controllers.sceneCatalogController.OnCatalogItemSelected += CatalogItemSelected;
 26124        controllers.sceneCatalogController.OnStopInput += StopInput;
 125
 26126        controllers.sceneCatalogController.OnResumeInput += () => OnResumeInput?.Invoke();
 26127        controllers.sceneCatalogController.OnPointerEnterInCatalogItemAdapter += ShowTooltipForCatalogItemAdapter;
 26128        controllers.sceneCatalogController.OnPointerExitInCatalogItemAdapter += (x, y) => controllers.tooltipController.
 26129    }
 130
 131    private void ConfigureEntityInformationController()
 132    {
 26133        controllers.entityInformationController.OnPositionChange += (x) => OnSelectedObjectPositionChange?.Invoke(x);
 26134        controllers.entityInformationController.OnRotationChange += (x) => OnSelectedObjectRotationChange?.Invoke(x);
 26135        controllers.entityInformationController.OnScaleChange += (x) => OnSelectedObjectScaleChange?.Invoke(x);
 26136        controllers.entityInformationController.OnNameChange += (entity, newName) => OnEntityRename?.Invoke(entity, newN
 26137        controllers.entityInformationController.OnSmartItemComponentUpdate += (entity) => OnEntitySmartItemComponentUpda
 26138        controllers.entityInformationController.OnDisable += OnEntityInformationDisable;
 26139    }
 140
 52141    private void ConfigureFirstPersonModeController() { controllers.firstPersonModeController.OnClick += () => OnChangeM
 142
 52143    private void ConfigureShortcutsController() { controllers.shortcutsController.OnCloseClick += ChangeVisibilityOfCont
 144
 145    private void ConfigureDragAndDropSceneObjectController()
 146    {
 26147        controllers.dragAndDropSceneObjectController.OnStopInput += StopInput;
 26148        controllers.dragAndDropSceneObjectController.OnResumeInput += () => OnResumeInput?.Invoke();
 26149        controllers.dragAndDropSceneObjectController.OnCatalogItemDropped += CatalogItemDropped;
 26150    }
 151
 52152    private void ConfigurePublishBtnController() { controllers.publishBtnController.OnClick += () => OnPublishAction?.In
 153
 52154    private void ConfigureInspectorBtnController() { controllers.inspectorBtnController.OnClick += () => ChangeVisibilit
 155
 52156    private void ConfigureCatalogBtnController() { controllers.catalogBtnController.OnClick += ChangeVisibilityOfCatalog
 157
 158    private void ConfigureInspectorController()
 159    {
 26160        controllers.inspectorController.OnEntityClick += (x) => OnEntityClick(x);
 26161        controllers.inspectorController.OnEntityDelete += (x) => OnEntityDelete(x);
 26162        controllers.inspectorController.OnEntityLock += (x) => OnEntityLock(x);
 26163        controllers.inspectorController.OnEntityChangeVisibility += (x) => OnEntityChangeVisibility(x);
 26164        controllers.inspectorController.OnEntityRename += (entity, newName) => OnEntityRename(entity, newName);
 26165        controllers.inspectorController.SetCloseButtonsAction(ChangeVisibilityOfEntityList);
 26166    }
 167
 168    private void ConfigureTopActionsButtonsController()
 169    {
 26170        controllers.topActionsButtonsController.OnChangeModeClick += () => OnChangeModeAction?.Invoke();
 26171        controllers.topActionsButtonsController.OnExtraClick += ChangeVisibilityOfExtraBtns;
 26172        controllers.topActionsButtonsController.OnTranslateClick += () => OnTranslateSelectedAction?.Invoke();
 26173        controllers.topActionsButtonsController.OnRotateClick += () => OnRotateSelectedAction?.Invoke();
 26174        controllers.topActionsButtonsController.OnScaleClick += () => OnScaleSelectedAction?.Invoke();
 26175        controllers.topActionsButtonsController.OnUndoClick += () => OnUndoAction?.Invoke();
 26176        controllers.topActionsButtonsController.OnRedoClick += () => OnRedoAction?.Invoke();
 26177        controllers.topActionsButtonsController.OnDuplicateClick += () => OnDuplicateSelectedAction?.Invoke();
 26178        controllers.topActionsButtonsController.OnDeleteClick += () => OnDeleteSelectedAction?.Invoke();
 26179        controllers.topActionsButtonsController.OnSnapModeClick += () => OnChangeSnapModeAction?.Invoke();
 26180        controllers.topActionsButtonsController.OnLogOutClick += ExitStart;
 26181        controllers.topActionsButtonsController.extraActionsController.OnControlsClick += ChangeVisibilityOfControls;
 26182        controllers.topActionsButtonsController.extraActionsController.OnHideUIClick += ChangeVisibilityOfUI;
 26183        controllers.topActionsButtonsController.extraActionsController.OnResetClick += () => OnResetAction?.Invoke();
 26184        controllers.topActionsButtonsController.extraActionsController.OnTutorialClick += () => OnTutorialAction?.Invoke
 26185        controllers.topActionsButtonsController.extraActionsController.OnResetCameraClick += () => OnResetCameraAction?.
 186
 26187        controllers.topActionsButtonsController.extraActionsController.SetResetButtonInteractable(false);
 26188    }
 189
 52190    private void ConfigureSaveHUDController() { OnLogoutAction += controllers.saveHUDController.StopAnimation; }
 191
 192    private void ConfigureNewProjectDetailsController()
 193    {
 26194        controllers.newProjectDetailsController.OnCancel += CancelNewProjectDetails;
 26195        controllers.newProjectDetailsController.OnConfirm += SaveSceneInfo;
 26196    }
 197
 198    private void ConfigurePublicationDetailsController()
 199    {
 26200        controllers.publicationDetailsController.OnCancel += CancelPublicationDetails;
 26201        controllers.publicationDetailsController.OnConfirm += ConfirmPublicationDetails;
 26202    }
 203
 52204    private void ConfigureQuickBarController() { controllers.quickBarController.OnCatalogItemAssigned += QuickBarCatalog
 205
 0206    private void QuickBarCatalogItemAssigned(CatalogItem item) { BIWAnalytics.QuickAccessAssigned(item, GetCatalogSectio
 207
 0208    public void SceneSaved() { controllers.saveHUDController.SceneStateSave(); }
 209
 210    public void SetBuilderProjectInfo(string projectName, string projectDescription)
 211    {
 2212        if (!string.IsNullOrEmpty(projectName))
 213        {
 1214            controllers.newProjectDetailsController.SetCustomPublicationInfo(projectName, projectDescription);
 1215            controllers.publicationDetailsController.SetCustomPublicationInfo(projectName, projectDescription);
 1216        }
 217        else
 218        {
 1219            controllers.newProjectDetailsController.SetDefaultPublicationInfo();
 1220            controllers.publicationDetailsController.SetDefaultPublicationInfo();
 221        }
 1222    }
 223
 224    public void NewProjectStart(Texture2D screenshot)
 225    {
 1226        controllers.newProjectDetailsController.SetPublicationScreenshot(screenshot);
 227
 228        // TODO: This is temporal until we add the Welcome panel where the user will be able to edit the project info
 229        //controllers.newProjectDetailsController.SetActive(true);
 1230        SaveSceneInfo();
 1231    }
 232
 233    public void SaveSceneInfo()
 234    {
 2235        Texture2D newSceneScreenshotTexture = controllers.newProjectDetailsController.GetSceneScreenshotTexture();
 2236        string newSceneName = controllers.newProjectDetailsController.GetSceneName();
 2237        string newSceneDescription = controllers.newProjectDetailsController.GetSceneDescription();
 238
 2239        controllers.publicationDetailsController.SetCustomPublicationInfo(newSceneName, newSceneDescription);
 2240        controllers.newProjectDetailsController.SetActive(false);
 241
 2242        OnSaveSceneInfoAction?.Invoke(
 243            newSceneName,
 244            newSceneDescription,
 245            newSceneScreenshotTexture != null ? Convert.ToBase64String(newSceneScreenshotTexture.EncodeToJPG(90)) : "");
 1246    }
 247
 2248    internal void CancelNewProjectDetails() { controllers.newProjectDetailsController.SetActive(false); }
 249
 250    public void SetBuilderProjectScreenshot(Texture2D screenshot)
 251    {
 0252        controllers.publicationDetailsController.SetPublicationScreenshot(screenshot);
 0253        controllers.newProjectDetailsController.SetPublicationScreenshot(screenshot);
 0254    }
 255
 2256    public void PublishStart() { controllers.publicationDetailsController.SetActive(true); }
 257
 258    public void ConfigureConfirmationModal(string title, string subTitle, string cancelButtonText, string confirmButtonT
 259    {
 3260        controllers.buildModeConfirmationModalController.Configure(
 261            title,
 262            subTitle,
 263            cancelButtonText,
 264            confirmButtonText);
 3265    }
 266
 267    internal void ConfirmPublicationDetails()
 268    {
 1269        UnsubscribeConfirmationModal();
 270
 1271        controllers.buildModeConfirmationModalController.OnCancelExit += CancelPublishModal;
 1272        controllers.buildModeConfirmationModalController.OnConfirmExit += ConfirmPublishModal;
 273
 1274        ConfigureConfirmationModal(
 275            BIWSettings.PUBLISH_MODAL_TITLE,
 276            BIWSettings.PUBLISH_MODAL_SUBTITLE,
 277            BIWSettings.PUBLISH_MODAL_CANCEL_BUTTON,
 278            BIWSettings.PUBLISH_MODAL_CONFIRM_BUTTON);
 279
 1280        controllers.buildModeConfirmationModalController.SetActive(true, BuildModeModalType.PUBLISH);
 1281        controllers.publicationDetailsController.SetActive(false);
 1282    }
 283
 2284    internal void CancelPublicationDetails() { controllers.publicationDetailsController.SetActive(false); }
 285
 286    internal void CancelPublishModal(BuildModeModalType modalType)
 287    {
 1288        if (modalType != BuildModeModalType.PUBLISH)
 0289            return;
 290
 1291        controllers.buildModeConfirmationModalController.SetActive(false, BuildModeModalType.PUBLISH);
 1292        controllers.publicationDetailsController.SetActive(true);
 293
 1294        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelPublishModal;
 1295        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmPublishModal;
 1296    }
 297
 298    internal void ConfirmPublishModal(BuildModeModalType modalType)
 299    {
 1300        if (modalType != BuildModeModalType.PUBLISH)
 0301            return;
 302
 1303        controllers.publishPopupController.PublishStart();
 304
 1305        Texture2D sceneScreenshotTexture = controllers.publicationDetailsController.GetSceneScreenshotTexture();
 1306        string sceneName = controllers.publicationDetailsController.GetSceneName();
 1307        string sceneDescription = controllers.publicationDetailsController.GetSceneDescription();
 308
 1309        OnConfirmPublishAction?.Invoke(
 310            sceneName,
 311            sceneDescription,
 312            sceneScreenshotTexture != null ? Convert.ToBase64String(sceneScreenshotTexture.EncodeToJPG(90)) : "");
 313
 1314        controllers.newProjectDetailsController.SetCustomPublicationInfo(sceneName, sceneDescription);
 315
 316        // NOTE (Santi): This is temporal until we implement the way of return the publish progress from the kernel side
 317        //               Meanwhile we will display a fake progress.
 1318        publishProgressCoroutine = CoroutineStarter.Start(FakePublishProgress());
 319
 1320        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelPublishModal;
 1321        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmPublishModal;
 1322    }
 323
 324    private IEnumerator FakePublishProgress()
 325    {
 0326        while (true)
 327        {
 1328            float newPercentage = Mathf.Clamp(
 329                controllers.publishPopupController.currentProgress + UnityEngine.Random.Range(10f, 30f),
 330                controllers.publishPopupController.currentProgress,
 331                99f);
 332
 1333            controllers.publishPopupController.SetPercentage(newPercentage);
 334
 1335            yield return new WaitForSeconds(UnityEngine.Random.Range(0f, 0.5f));
 336        }
 337    }
 338
 339    public void ExitStart()
 340    {
 1341        if (controllers.buildModeConfirmationModalController.IsViewActive())
 0342            return;
 1343        UnsubscribeConfirmationModal();
 344
 1345        controllers.buildModeConfirmationModalController.OnCancelExit += CancelExitModal;
 1346        controllers.buildModeConfirmationModalController.OnConfirmExit += ConfirmExitModal;
 347
 1348        controllers.buildModeConfirmationModalController.SetActive(true, BuildModeModalType.EXIT);
 349
 1350        OnStartExitAction?.Invoke();
 0351    }
 352
 353    internal void CancelExitModal(BuildModeModalType modalType)
 354    {
 1355        if (modalType != BuildModeModalType.EXIT)
 0356            return;
 357
 1358        controllers.buildModeConfirmationModalController.SetActive(false, BuildModeModalType.EXIT);
 359
 1360        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelExitModal;
 1361        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmExitModal;
 1362    }
 363
 364    internal void ConfirmExitModal(BuildModeModalType modalType)
 365    {
 1366        if (modalType != BuildModeModalType.EXIT)
 0367            return;
 368
 1369        OnLogoutAction?.Invoke();
 370
 1371        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelExitModal;
 1372        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmExitModal;
 373
 1374        controllers.publicationDetailsController.SetDefaultPublicationInfo();
 1375    }
 376
 377    private void UnsubscribeConfirmationModal()
 378    {
 2379        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelPublishModal;
 2380        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelExitModal;
 2381        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmPublishModal;
 2382        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmExitModal;
 2383    }
 384
 385    public void PublishEnd(bool isOk, string message)
 386    {
 2387        if (publishProgressCoroutine != null)
 388        {
 0389            CoroutineStarter.Stop(publishProgressCoroutine);
 0390            publishProgressCoroutine = null;
 391        }
 392
 2393        controllers.publishPopupController.PublishEnd(isOk, message);
 2394    }
 395
 0396    public void SetGizmosActive(string gizmos) { controllers.topActionsButtonsController.SetGizmosActive(gizmos); }
 16397    public void SetParcelScene(ParcelScene parcelScene) { controllers.inspectorController.sceneLimitsController.SetParce
 398
 4399    public void SetPublishBtnAvailability(bool isAvailable, string feedbackMessage = "") { view.SetPublishBtnAvailabilit
 400
 401    #region Catalog
 402
 0403    public BuildModeCatalogSection GetCatalogSectionSelected() { return controllers.sceneCatalogController.GetCurrentSec
 404
 405    private void ShowTooltipForCatalogItemAdapter(PointerEventData data, CatalogItemAdapter adapter)
 406    {
 0407        controllers.tooltipController.SetTooltipText(adapter.GetContent().name);
 0408        controllers.tooltipController.ShowTooltip(data);
 0409    }
 410
 16411    public void RefreshCatalogAssetPack() { view.RefreshCatalogAssetPack(); }
 412
 32413    public void RefreshCatalogContent() { view.RefreshCatalogContent(); }
 414
 415    public void StopInput()
 416    {
 0417        OnStopInput?.Invoke();
 0418        ToggleCatalogIfExpanded();
 0419    }
 420
 421    public void CatalogItemSelected(CatalogItem catalogItem)
 422    {
 1423        OnCatalogItemSelected?.Invoke(catalogItem);
 1424        ToggleCatalogIfExpanded();
 1425    }
 426
 427    public void CatalogItemDropped(CatalogItem catalogItem)
 428    {
 0429        OnCatalogItemDropped?.Invoke(catalogItem);
 0430        ToggleCatalogIfExpanded();
 0431    }
 432
 433    private void ToggleCatalogIfExpanded()
 434    {
 1435        if (controllers.sceneCatalogController.IsCatalogExpanded())
 0436            controllers.sceneCatalogController.ToggleCatalogExpanse();
 1437    }
 438
 439    public void SetVisibilityOfCatalog(bool isVisible)
 440    {
 10441        isCatalogOpen = isVisible;
 10442        view.SetVisibilityOfCatalog(isCatalogOpen);
 443
 10444        if (isVisible)
 9445            OnCatalogOpen?.Invoke();
 2446    }
 447
 448    public void ChangeVisibilityOfCatalog()
 449    {
 1450        isCatalogOpen = !controllers.sceneCatalogController.IsCatalogOpen();
 1451        SetVisibilityOfCatalog(isCatalogOpen);
 1452    }
 453
 454    #endregion
 455
 456    #region SceneLimitInfo
 457
 458    public void ShowSceneLimitsPassed()
 459    {
 0460        if (!isSceneLimitInfoVisibile)
 0461            ChangeVisibilityOfSceneInfo();
 0462    }
 463
 2464    public void UpdateSceneLimitInfo() { controllers.inspectorController.sceneLimitsController.UpdateInfo(); }
 465
 466    public void ChangeVisibilityOfSceneInfo(bool shouldBeVisibile)
 467    {
 2468        isSceneLimitInfoVisibile = shouldBeVisibile;
 2469        view.SetVisibilityOfSceneInfo(isSceneLimitInfoVisibile);
 2470    }
 471
 472    public void ChangeVisibilityOfSceneInfo()
 473    {
 1474        isSceneLimitInfoVisibile = !isSceneLimitInfoVisibile;
 1475        view.SetVisibilityOfSceneInfo(isSceneLimitInfoVisibile);
 1476    }
 477
 478    #endregion
 479
 480    public void ActivateFirstPersonModeUI()
 481    {
 1482        if (view != null)
 1483            view.SetFirstPersonView();
 1484    }
 485
 486    public void ActivateGodModeUI()
 487    {
 9488        if (view != null)
 9489            view.SetGodModeView();
 9490    }
 491
 492    #region EntityInformation
 493
 2494    public void EntityInformationSetEntity(BIWEntity entity, ParcelScene scene) { controllers.entityInformationControlle
 495
 496    public void ShowEntityInformation(bool activateTransparencyMode = false)
 497    {
 2498        controllers.entityInformationController.Enable();
 2499        controllers.entityInformationController.SetTransparencyMode(activateTransparencyMode);
 2500        controllers.sceneCatalogController.CloseCatalog();
 2501        controllers.tooltipController.HideTooltip();
 502
 2503        if (activateTransparencyMode)
 1504            controllers.catalogBtnController.SetActive(false);
 2505    }
 506
 507    public void HideEntityInformation()
 508    {
 1509        controllers.entityInformationController.Disable();
 1510        controllers.catalogBtnController.SetActive(true);
 511
 1512        if (isCatalogOpen)
 0513            controllers.sceneCatalogController.SetActive(true);
 1514    }
 515
 516    private void OnEntityInformationDisable()
 517    {
 0518        if (isCatalogOpen)
 0519            controllers.sceneCatalogController.SetActive(true);
 0520    }
 521
 522    #endregion
 523
 524    public void SetEntityList(List<BIWEntity> entityList)
 525    {
 9526        controllers.inspectorController.SetEntityList(entityList);
 527
 9528        if (view.entityInformation != null)
 8529            view.entityInformation.smartItemListView.SetEntityList(entityList);
 9530    }
 531
 532    public void ChangeVisibilityOfEntityList()
 533    {
 2534        isEntityListVisible = !isEntityListVisible;
 2535        controllers.saveHUDController?.SetSaveViewByEntityListOpen(isEntityListVisible);
 2536        if (isEntityListVisible)
 537        {
 1538            OnEntityListVisible?.Invoke();
 1539            controllers.inspectorController.OpenEntityList();
 1540        }
 541        else
 542        {
 1543            controllers.inspectorController.CloseList();
 544        }
 1545    }
 546
 10547    public void ClearEntityList() { controllers.inspectorController.ClearList(); }
 548
 549    public void ChangeVisibilityOfControls()
 550    {
 1551        isControlsVisible = !isControlsVisible;
 1552        view.SetVisibilityOfControls(isControlsVisible);
 1553    }
 554
 555    public void ChangeVisibilityOfUI()
 556    {
 0557        DataStore.i.builderInWorld.showTaskBar.Set(!IsVisible());
 0558        SetVisibility(!IsVisible());
 0559    }
 560
 561    #region TopButtons
 562
 563    public void ChangeVisibilityOfExtraBtns()
 564    {
 1565        areExtraButtonsVisible = !areExtraButtonsVisible;
 1566        view.SetVisibilityOfExtraBtns(areExtraButtonsVisible);
 1567        timeFromLastClickOnExtraButtons = Time.realtimeSinceStartup;
 1568    }
 569
 570    public void HideExtraBtns()
 571    {
 0572        if ((Time.realtimeSinceStartup - timeFromLastClickOnExtraButtons) <= 0.1f)
 0573            return;
 574
 0575        areExtraButtonsVisible = false;
 0576        controllers.topActionsButtonsController.extraActionsController.SetActive(areExtraButtonsVisible);
 0577    }
 578
 0579    public void SetActionsButtonsInteractable(bool isInteractable) { controllers.topActionsButtonsController.SetActionsI
 580
 16581    public void SetSnapModeActive(bool isActive) { controllers.topActionsButtonsController.SetSnapActive(isActive); }
 582
 16583    public void SetUndoButtonInteractable(bool isInteractable) { controllers.topActionsButtonsController.SetUndoInteract
 16584    public void SetRedoButtonInteractable(bool isInteractable) { controllers.topActionsButtonsController.SetRedoInteract
 585
 586    #endregion
 587
 588    public void SetVisibility(bool visible)
 589    {
 5590        if (view == null)
 0591            return;
 592
 5593        if (IsVisible() && !visible)
 594        {
 0595            view.AnimatorShow(false);
 0596            AudioScriptableObjects.fadeOut.Play(true);
 0597        }
 5598        else if (!IsVisible() && visible)
 599        {
 1600            view.SetActive(true);
 1601            view.AnimatorShow(true);
 1602            AudioScriptableObjects.fadeIn.Play(true);
 603        }
 5604    }
 605
 606    public void Dispose()
 607    {
 51608        if (view == null)
 0609            return;
 51610        else if (view.viewGO != null)
 26611            UnityEngine.Object.Destroy(view.viewGO);
 51612    }
 613
 0614    public void ToggleVisibility() { SetVisibility(!IsVisible()); }
 615
 616    public bool IsVisible()
 617    {
 10618        if (view == null)
 0619            return false;
 620
 10621        return view.isShowHideAnimatorVisible;
 622    }
 623
 26624    internal virtual IBuildModeHUDView CreateView() => BuildModeHUDView.Create();
 625
 626    public void UpdateEntitiesSelection(int numberOfSelectedEntities)
 627    {
 0628        controllers.entityInformationController.UpdateEntitiesSelection(numberOfSelectedEntities);
 0629        controllers.topActionsButtonsController.extraActionsController.SetResetButtonInteractable(numberOfSelectedEntiti
 0630    }
 631
 632    #region Inspector
 633
 634    public void SetVisibilityOfInspector(bool isVisible)
 635    {
 9636        isEntityListVisible = isVisible;
 9637        view.SetVisibilityOfInspector(isVisible);
 9638    }
 639
 640    #endregion
 641
 642}

Methods/Properties

Initialize()
Initialize(BuildModeHUDInitializationModel)
CreateBuildModeControllers()
CreateMainView()
ConfigureSceneCatalogController()
ConfigureEntityInformationController()
ConfigureFirstPersonModeController()
ConfigureShortcutsController()
ConfigureDragAndDropSceneObjectController()
ConfigurePublishBtnController()
ConfigureInspectorBtnController()
ConfigureCatalogBtnController()
ConfigureInspectorController()
ConfigureTopActionsButtonsController()
ConfigureSaveHUDController()
ConfigureNewProjectDetailsController()
ConfigurePublicationDetailsController()
ConfigureQuickBarController()
QuickBarCatalogItemAssigned(CatalogItem)
SceneSaved()
SetBuilderProjectInfo(System.String, System.String)
NewProjectStart(UnityEngine.Texture2D)
SaveSceneInfo()
CancelNewProjectDetails()
SetBuilderProjectScreenshot(UnityEngine.Texture2D)
PublishStart()
ConfigureConfirmationModal(System.String, System.String, System.String, System.String)
ConfirmPublicationDetails()
CancelPublicationDetails()
CancelPublishModal(BuildModeModalType)
ConfirmPublishModal(BuildModeModalType)
FakePublishProgress()
ExitStart()
CancelExitModal(BuildModeModalType)
ConfirmExitModal(BuildModeModalType)
UnsubscribeConfirmationModal()
PublishEnd(System.Boolean, System.String)
SetGizmosActive(System.String)
SetParcelScene(DCL.Controllers.ParcelScene)
SetPublishBtnAvailability(System.Boolean, System.String)
GetCatalogSectionSelected()
ShowTooltipForCatalogItemAdapter(UnityEngine.EventSystems.PointerEventData, CatalogItemAdapter)
RefreshCatalogAssetPack()
RefreshCatalogContent()
StopInput()
CatalogItemSelected(CatalogItem)
CatalogItemDropped(CatalogItem)
ToggleCatalogIfExpanded()
SetVisibilityOfCatalog(System.Boolean)
ChangeVisibilityOfCatalog()
ShowSceneLimitsPassed()
UpdateSceneLimitInfo()
ChangeVisibilityOfSceneInfo(System.Boolean)
ChangeVisibilityOfSceneInfo()
ActivateFirstPersonModeUI()
ActivateGodModeUI()
EntityInformationSetEntity(BIWEntity, DCL.Controllers.ParcelScene)
ShowEntityInformation(System.Boolean)
HideEntityInformation()
OnEntityInformationDisable()
SetEntityList(System.Collections.Generic.List[BIWEntity])
ChangeVisibilityOfEntityList()
ClearEntityList()
ChangeVisibilityOfControls()
ChangeVisibilityOfUI()
ChangeVisibilityOfExtraBtns()
HideExtraBtns()
SetActionsButtonsInteractable(System.Boolean)
SetSnapModeActive(System.Boolean)
SetUndoButtonInteractable(System.Boolean)
SetRedoButtonInteractable(System.Boolean)
SetVisibility(System.Boolean)
Dispose()
ToggleVisibility()
IsVisible()
CreateView()
UpdateEntitiesSelection(System.Int32)
SetVisibilityOfInspector(System.Boolean)