< 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    {
 2760        CreateBuildModeControllers();
 2761        CreateMainView();
 2762        ConfigureSceneCatalogController();
 2763        ConfigureEntityInformationController();
 2764        ConfigureFirstPersonModeController();
 2765        ConfigureShortcutsController();
 2766        ConfigureDragAndDropSceneObjectController();
 2767        ConfigurePublishBtnController();
 2768        ConfigureInspectorBtnController();
 2769        ConfigureCatalogBtnController();
 2770        ConfigureInspectorController();
 2771        ConfigureTopActionsButtonsController();
 2772        ConfigureSaveHUDController();
 2773        ConfigureNewProjectDetailsController();
 2774        ConfigurePublicationDetailsController();
 2775        ConfigureQuickBarController();
 2776    }
 77
 78    public void Initialize(BuildModeHUDInitializationModel controllers)
 79    {
 4580        this.controllers = controllers;
 81
 4582        CreateMainView();
 4583    }
 84
 85    internal void CreateBuildModeControllers()
 86    {
 2887        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        };
 28108    }
 109
 110    internal void CreateMainView()
 111    {
 73112        view = CreateView();
 113
 73114        if (view.viewGO != null)
 27115            view.viewGO.SetActive(false);
 116
 73117        view.Initialize(controllers);
 73118    }
 119
 120    private void ConfigureSceneCatalogController()
 121    {
 27122        controllers.sceneCatalogController.OnHideCatalogClicked += ChangeVisibilityOfCatalog;
 27123        controllers.sceneCatalogController.OnCatalogItemSelected += CatalogItemSelected;
 27124        controllers.sceneCatalogController.OnStopInput += StopInput;
 125
 27126        controllers.sceneCatalogController.OnResumeInput += () => OnResumeInput?.Invoke();
 27127        controllers.sceneCatalogController.OnPointerEnterInCatalogItemAdapter += ShowTooltipForCatalogItemAdapter;
 27128        controllers.sceneCatalogController.OnPointerExitInCatalogItemAdapter += (x, y) => controllers.tooltipController.
 27129    }
 130
 131    private void ConfigureEntityInformationController()
 132    {
 27133        controllers.entityInformationController.OnPositionChange += (x) => OnSelectedObjectPositionChange?.Invoke(x);
 27134        controllers.entityInformationController.OnRotationChange += (x) => OnSelectedObjectRotationChange?.Invoke(x);
 27135        controllers.entityInformationController.OnScaleChange += (x) => OnSelectedObjectScaleChange?.Invoke(x);
 27136        controllers.entityInformationController.OnNameChange += (entity, newName) => OnEntityRename?.Invoke(entity, newN
 27137        controllers.entityInformationController.OnSmartItemComponentUpdate += (entity) => OnEntitySmartItemComponentUpda
 27138        controllers.entityInformationController.OnDisable += OnEntityInformationDisable;
 27139    }
 140
 54141    private void ConfigureFirstPersonModeController() { controllers.firstPersonModeController.OnClick += () => OnChangeM
 142
 54143    private void ConfigureShortcutsController() { controllers.shortcutsController.OnCloseClick += ChangeVisibilityOfCont
 144
 145    private void ConfigureDragAndDropSceneObjectController()
 146    {
 27147        controllers.dragAndDropSceneObjectController.OnStopInput += StopInput;
 27148        controllers.dragAndDropSceneObjectController.OnResumeInput += () => OnResumeInput?.Invoke();
 27149        controllers.dragAndDropSceneObjectController.OnCatalogItemDropped += CatalogItemDropped;
 27150    }
 151
 54152    private void ConfigurePublishBtnController() { controllers.publishBtnController.OnClick += () => OnPublishAction?.In
 153
 54154    private void ConfigureInspectorBtnController() { controllers.inspectorBtnController.OnClick += () => ChangeVisibilit
 155
 54156    private void ConfigureCatalogBtnController() { controllers.catalogBtnController.OnClick += ChangeVisibilityOfCatalog
 157
 158    private void ConfigureInspectorController()
 159    {
 27160        controllers.inspectorController.OnEntityClick += (x) => OnEntityClick(x);
 27161        controllers.inspectorController.OnEntityDelete += (x) => OnEntityDelete(x);
 27162        controllers.inspectorController.OnEntityLock += (x) => OnEntityLock(x);
 27163        controllers.inspectorController.OnEntityChangeVisibility += (x) => OnEntityChangeVisibility(x);
 27164        controllers.inspectorController.OnEntityRename += (entity, newName) => OnEntityRename(entity, newName);
 27165        controllers.inspectorController.SetCloseButtonsAction(ChangeVisibilityOfEntityList);
 27166    }
 167
 168    private void ConfigureTopActionsButtonsController()
 169    {
 27170        controllers.topActionsButtonsController.OnChangeModeClick += () => OnChangeModeAction?.Invoke();
 27171        controllers.topActionsButtonsController.OnExtraClick += ChangeVisibilityOfExtraBtns;
 27172        controllers.topActionsButtonsController.OnTranslateClick += () => OnTranslateSelectedAction?.Invoke();
 27173        controllers.topActionsButtonsController.OnRotateClick += () => OnRotateSelectedAction?.Invoke();
 27174        controllers.topActionsButtonsController.OnScaleClick += () => OnScaleSelectedAction?.Invoke();
 27175        controllers.topActionsButtonsController.OnUndoClick += () => OnUndoAction?.Invoke();
 27176        controllers.topActionsButtonsController.OnRedoClick += () => OnRedoAction?.Invoke();
 27177        controllers.topActionsButtonsController.OnDuplicateClick += () => OnDuplicateSelectedAction?.Invoke();
 27178        controllers.topActionsButtonsController.OnDeleteClick += () => OnDeleteSelectedAction?.Invoke();
 27179        controllers.topActionsButtonsController.OnSnapModeClick += () => OnChangeSnapModeAction?.Invoke();
 27180        controllers.topActionsButtonsController.OnLogOutClick += ExitStart;
 27181        controllers.topActionsButtonsController.extraActionsController.OnControlsClick += ChangeVisibilityOfControls;
 27182        controllers.topActionsButtonsController.extraActionsController.OnHideUIClick += ChangeVisibilityOfUI;
 27183        controllers.topActionsButtonsController.extraActionsController.OnResetClick += () => OnResetAction?.Invoke();
 27184        controllers.topActionsButtonsController.extraActionsController.OnTutorialClick += () => OnTutorialAction?.Invoke
 27185        controllers.topActionsButtonsController.extraActionsController.OnResetCameraClick += () => OnResetCameraAction?.
 186
 27187        controllers.topActionsButtonsController.extraActionsController.SetResetButtonInteractable(false);
 27188    }
 189
 54190    private void ConfigureSaveHUDController() { OnLogoutAction += controllers.saveHUDController.StopAnimation; }
 191
 192    private void ConfigureNewProjectDetailsController()
 193    {
 27194        controllers.newProjectDetailsController.OnCancel += CancelNewProjectDetails;
 27195        controllers.newProjectDetailsController.OnConfirm += SaveSceneInfo;
 27196    }
 197
 198    private void ConfigurePublicationDetailsController()
 199    {
 27200        controllers.publicationDetailsController.OnCancel += CancelPublicationDetails;
 27201        controllers.publicationDetailsController.OnConfirm += ConfirmPublicationDetails;
 27202    }
 203
 54204    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
 4464    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    {
 8488        if (view != null)
 8489            view.SetGodModeView();
 8490    }
 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
 14581    public void SetSnapModeActive(bool isActive) { controllers.topActionsButtonsController.SetSnapActive(isActive); }
 582
 14583    public void SetUndoButtonInteractable(bool isInteractable) { controllers.topActionsButtonsController.SetUndoInteract
 14584    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    {
 54608        if (view == null)
 0609            return;
 54610        else if (view.viewGO != null)
 28611            UnityEngine.Object.Destroy(view.viewGO);
 54612    }
 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
 27624    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)