< 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:56
Coverable lines:295
Total lines:650
Line coverage:81% (239 of 295)
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%
ConfigureCatalogItemDropController()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%330100%
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%2.062075%
ChangeVisibilityOfEntityList()0%440100%
ClearEntityList()0%110100%
ChangeVisibilityOfControls()0%110100%
ChangeVisibilityOfUI()0%2100%
ChangeVisibilityOfExtraBtns()0%110100%
HideExtraBtns()0%6200%
SetActionsButtonsInteractable(...)0%2100%
SetSnapModeActive(...)0%2100%
SetUndoButtonInteractable(...)0%2100%
SetRedoButtonInteractable(...)0%2100%
SetVisibility(...)0%6.25063.64%
Dispose()0%3.073080%
ToggleVisibility()0%2100%
IsVisible()0%2.152066.67%
SceneObjectDroppedInView()0%2100%
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<DCLBuilderInWorldEntity> OnEntityClick;
 35    public event Action<DCLBuilderInWorldEntity> OnEntityDelete;
 36    public event Action<DCLBuilderInWorldEntity> OnEntityLock;
 37    public event Action<DCLBuilderInWorldEntity> OnEntityChangeVisibility;
 38    public event Action<DCLBuilderInWorldEntity, string> OnEntityRename;
 39    public event Action<DCLBuilderInWorldEntity> 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    internal CatalogItemDropController catalogItemDropController;
 55
 56    private Coroutine publishProgressCoroutine = null;
 57    private float timeFromLastClickOnExtraButtons = 0f;
 58
 59    public void Initialize()
 60    {
 161        CreateBuildModeControllers();
 162        CreateMainView();
 163        ConfigureSceneCatalogController();
 164        ConfigureEntityInformationController();
 165        ConfigureFirstPersonModeController();
 166        ConfigureShortcutsController();
 167        ConfigureDragAndDropSceneObjectController();
 168        ConfigurePublishBtnController();
 169        ConfigureInspectorBtnController();
 170        ConfigureCatalogBtnController();
 171        ConfigureInspectorController();
 172        ConfigureTopActionsButtonsController();
 173        ConfigureCatalogItemDropController();
 174        ConfigureSaveHUDController();
 175        ConfigureNewProjectDetailsController();
 176        ConfigurePublicationDetailsController();
 177        ConfigureQuickBarController();
 178    }
 79
 80    public void Initialize(BuildModeHUDInitializationModel controllers)
 81    {
 4582        this.controllers = controllers;
 4583        catalogItemDropController = new CatalogItemDropController();
 84
 4585        CreateMainView();
 4586    }
 87
 88    internal void CreateBuildModeControllers()
 89    {
 290        controllers = new BuildModeHUDInitializationModel
 91        {
 92            tooltipController = new TooltipController(),
 93            feedbackTooltipController = new TooltipController(),
 94            sceneCatalogController = new SceneCatalogController(),
 95            quickBarController = new QuickBarController(),
 96            entityInformationController = new EntityInformationController(),
 97            firstPersonModeController = new FirstPersonModeController(),
 98            shortcutsController = new ShortcutsController(),
 99            publishPopupController = new PublishPopupController(),
 100            dragAndDropSceneObjectController = new DragAndDropSceneObjectController(),
 101            publishBtnController = new PublishBtnController(),
 102            inspectorBtnController = new InspectorBtnController(),
 103            catalogBtnController = new CatalogBtnController(),
 104            inspectorController = new InspectorController(),
 105            buildModeConfirmationModalController = new BuildModeConfirmationModalController(),
 106            topActionsButtonsController = new TopActionsButtonsController(),
 107            saveHUDController = new SaveHUDController(),
 108            newProjectDetailsController = new PublicationDetailsController(),
 109            publicationDetailsController = new PublicationDetailsController()
 110        };
 111
 2112        catalogItemDropController = new CatalogItemDropController();
 2113    }
 114
 115    internal void CreateMainView()
 116    {
 47117        view = CreateView();
 118
 47119        if (view.viewGO != null)
 1120            view.viewGO.SetActive(false);
 121
 47122        view.Initialize(controllers);
 47123    }
 124
 125    private void ConfigureSceneCatalogController()
 126    {
 1127        controllers.sceneCatalogController.OnHideCatalogClicked += ChangeVisibilityOfCatalog;
 1128        controllers.sceneCatalogController.OnCatalogItemSelected += CatalogItemSelected;
 1129        controllers.sceneCatalogController.OnStopInput += StopInput;
 130
 1131        controllers.sceneCatalogController.OnResumeInput += () => OnResumeInput?.Invoke();
 1132        controllers.sceneCatalogController.OnPointerEnterInCatalogItemAdapter += ShowTooltipForCatalogItemAdapter;
 1133        controllers.sceneCatalogController.OnPointerExitInCatalogItemAdapter += (x, y) => controllers.tooltipController.
 1134    }
 135
 136    private void ConfigureEntityInformationController()
 137    {
 1138        controllers.entityInformationController.OnPositionChange += (x) => OnSelectedObjectPositionChange?.Invoke(x);
 1139        controllers.entityInformationController.OnRotationChange += (x) => OnSelectedObjectRotationChange?.Invoke(x);
 1140        controllers.entityInformationController.OnScaleChange += (x) => OnSelectedObjectScaleChange?.Invoke(x);
 1141        controllers.entityInformationController.OnNameChange += (entity, newName) => OnEntityRename?.Invoke(entity, newN
 1142        controllers.entityInformationController.OnSmartItemComponentUpdate += (entity) => OnEntitySmartItemComponentUpda
 1143        controllers.entityInformationController.OnDisable += OnEntityInformationDisable;
 1144    }
 145
 2146    private void ConfigureFirstPersonModeController() { controllers.firstPersonModeController.OnClick += () => OnChangeM
 147
 2148    private void ConfigureShortcutsController() { controllers.shortcutsController.OnCloseClick += ChangeVisibilityOfCont
 149
 2150    private void ConfigureDragAndDropSceneObjectController() { controllers.dragAndDropSceneObjectController.OnDrop += ()
 151
 2152    private void ConfigurePublishBtnController() { controllers.publishBtnController.OnClick += () => OnPublishAction?.In
 153
 2154    private void ConfigureInspectorBtnController() { controllers.inspectorBtnController.OnClick += () => ChangeVisibilit
 155
 2156    private void ConfigureCatalogBtnController() { controllers.catalogBtnController.OnClick += ChangeVisibilityOfCatalog
 157
 158    private void ConfigureInspectorController()
 159    {
 1160        controllers.inspectorController.OnEntityClick += (x) => OnEntityClick(x);
 1161        controllers.inspectorController.OnEntityDelete += (x) => OnEntityDelete(x);
 1162        controllers.inspectorController.OnEntityLock += (x) => OnEntityLock(x);
 1163        controllers.inspectorController.OnEntityChangeVisibility += (x) => OnEntityChangeVisibility(x);
 1164        controllers.inspectorController.OnEntityRename += (entity, newName) => OnEntityRename(entity, newName);
 1165        controllers.inspectorController.SetCloseButtonsAction(ChangeVisibilityOfEntityList);
 1166    }
 167
 168    private void ConfigureTopActionsButtonsController()
 169    {
 1170        controllers.topActionsButtonsController.OnChangeModeClick += () => OnChangeModeAction?.Invoke();
 1171        controllers.topActionsButtonsController.OnExtraClick += ChangeVisibilityOfExtraBtns;
 1172        controllers.topActionsButtonsController.OnTranslateClick += () => OnTranslateSelectedAction?.Invoke();
 1173        controllers.topActionsButtonsController.OnRotateClick += () => OnRotateSelectedAction?.Invoke();
 1174        controllers.topActionsButtonsController.OnScaleClick += () => OnScaleSelectedAction?.Invoke();
 1175        controllers.topActionsButtonsController.OnUndoClick += () => OnUndoAction?.Invoke();
 1176        controllers.topActionsButtonsController.OnRedoClick += () => OnRedoAction?.Invoke();
 1177        controllers.topActionsButtonsController.OnDuplicateClick += () => OnDuplicateSelectedAction?.Invoke();
 1178        controllers.topActionsButtonsController.OnDeleteClick += () => OnDeleteSelectedAction?.Invoke();
 1179        controllers.topActionsButtonsController.OnSnapModeClick += () => OnChangeSnapModeAction?.Invoke();
 1180        controllers.topActionsButtonsController.OnLogOutClick += ExitStart;
 1181        controllers.topActionsButtonsController.extraActionsController.OnControlsClick += ChangeVisibilityOfControls;
 1182        controllers.topActionsButtonsController.extraActionsController.OnHideUIClick += ChangeVisibilityOfUI;
 1183        controllers.topActionsButtonsController.extraActionsController.OnResetClick += () => OnResetAction?.Invoke();
 1184        controllers.topActionsButtonsController.extraActionsController.OnTutorialClick += () => OnTutorialAction?.Invoke
 1185        controllers.topActionsButtonsController.extraActionsController.OnResetCameraClick += () => OnResetCameraAction?.
 186
 1187        controllers.topActionsButtonsController.extraActionsController.SetResetButtonInteractable(false);
 1188    }
 189
 190    private void ConfigureCatalogItemDropController()
 191    {
 1192        catalogItemDropController.catalogGroupListView = view.sceneCatalog.catalogGroupListView;
 1193        catalogItemDropController.OnCatalogItemDropped += CatalogItemDropped;
 1194    }
 195
 2196    private void ConfigureSaveHUDController() { OnLogoutAction += controllers.saveHUDController.StopAnimation; }
 197
 198    private void ConfigureNewProjectDetailsController()
 199    {
 1200        controllers.newProjectDetailsController.OnCancel += CancelNewProjectDetails;
 1201        controllers.newProjectDetailsController.OnConfirm += SaveSceneInfo;
 1202    }
 203
 204    private void ConfigurePublicationDetailsController()
 205    {
 1206        controllers.publicationDetailsController.OnCancel += CancelPublicationDetails;
 1207        controllers.publicationDetailsController.OnConfirm += ConfirmPublicationDetails;
 1208    }
 209
 2210    private void ConfigureQuickBarController() { controllers.quickBarController.OnCatalogItemAssigned += QuickBarCatalog
 211
 0212    private void QuickBarCatalogItemAssigned(CatalogItem item) { BIWAnalytics.QuickAccessAssigned(item, GetCatalogSectio
 213
 0214    public void SceneSaved() { controllers.saveHUDController.SceneStateSave(); }
 215
 216    public void SetBuilderProjectInfo(string projectName, string projectDescription)
 217    {
 2218        if (!string.IsNullOrEmpty(projectName))
 219        {
 1220            controllers.newProjectDetailsController.SetCustomPublicationInfo(projectName, projectDescription);
 1221            controllers.publicationDetailsController.SetCustomPublicationInfo(projectName, projectDescription);
 1222        }
 223        else
 224        {
 1225            controllers.newProjectDetailsController.SetDefaultPublicationInfo();
 1226            controllers.publicationDetailsController.SetDefaultPublicationInfo();
 227        }
 1228    }
 229
 230    public void NewProjectStart(Texture2D screenshot)
 231    {
 1232        controllers.newProjectDetailsController.SetPublicationScreenshot(screenshot);
 233
 234        // TODO: This is temporal until we add the Welcome panel where the user will be able to edit the project info
 235        //controllers.newProjectDetailsController.SetActive(true);
 1236        SaveSceneInfo();
 1237    }
 238
 239    public void SaveSceneInfo()
 240    {
 2241        Texture2D newSceneScreenshotTexture = controllers.newProjectDetailsController.GetSceneScreenshotTexture();
 2242        string newSceneName = controllers.newProjectDetailsController.GetSceneName();
 2243        string newSceneDescription = controllers.newProjectDetailsController.GetSceneDescription();
 244
 2245        controllers.publicationDetailsController.SetCustomPublicationInfo(newSceneName, newSceneDescription);
 2246        controllers.newProjectDetailsController.SetActive(false);
 247
 2248        OnSaveSceneInfoAction?.Invoke(
 249            newSceneName,
 250            newSceneDescription,
 251            newSceneScreenshotTexture != null ? Convert.ToBase64String(newSceneScreenshotTexture.EncodeToJPG(90)) : "");
 1252    }
 253
 2254    internal void CancelNewProjectDetails() { controllers.newProjectDetailsController.SetActive(false); }
 255
 256    public void SetBuilderProjectScreenshot(Texture2D screenshot)
 257    {
 0258        controllers.publicationDetailsController.SetPublicationScreenshot(screenshot);
 0259        controllers.newProjectDetailsController.SetPublicationScreenshot(screenshot);
 0260    }
 261
 2262    public void PublishStart() { controllers.publicationDetailsController.SetActive(true); }
 263
 264    public void ConfigureConfirmationModal(string title, string subTitle, string cancelButtonText, string confirmButtonT
 265    {
 2266        controllers.buildModeConfirmationModalController.Configure(
 267            title,
 268            subTitle,
 269            cancelButtonText,
 270            confirmButtonText);
 2271    }
 272
 273    internal void ConfirmPublicationDetails()
 274    {
 1275        UnsubscribeConfirmationModal();
 276
 1277        controllers.buildModeConfirmationModalController.OnCancelExit += CancelPublishModal;
 1278        controllers.buildModeConfirmationModalController.OnConfirmExit += ConfirmPublishModal;
 279
 1280        ConfigureConfirmationModal(
 281            BuilderInWorldSettings.PUBLISH_MODAL_TITLE,
 282            BuilderInWorldSettings.PUBLISH_MODAL_SUBTITLE,
 283            BuilderInWorldSettings.PUBLISH_MODAL_CANCEL_BUTTON,
 284            BuilderInWorldSettings.PUBLISH_MODAL_CONFIRM_BUTTON);
 285
 1286        controllers.buildModeConfirmationModalController.SetActive(true, BuildModeModalType.PUBLISH);
 1287        controllers.publicationDetailsController.SetActive(false);
 1288    }
 289
 2290    internal void CancelPublicationDetails() { controllers.publicationDetailsController.SetActive(false); }
 291
 292    internal void CancelPublishModal(BuildModeModalType modalType)
 293    {
 1294        if (modalType != BuildModeModalType.PUBLISH)
 0295            return;
 296
 1297        controllers.buildModeConfirmationModalController.SetActive(false, BuildModeModalType.PUBLISH);
 1298        controllers.publicationDetailsController.SetActive(true);
 299
 1300        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelPublishModal;
 1301        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmPublishModal;
 1302    }
 303
 304    internal void ConfirmPublishModal(BuildModeModalType modalType)
 305    {
 1306        if (modalType != BuildModeModalType.PUBLISH)
 0307            return;
 308
 1309        controllers.publishPopupController.PublishStart();
 310
 1311        Texture2D sceneScreenshotTexture = controllers.publicationDetailsController.GetSceneScreenshotTexture();
 1312        string sceneName = controllers.publicationDetailsController.GetSceneName();
 1313        string sceneDescription = controllers.publicationDetailsController.GetSceneDescription();
 314
 1315        OnConfirmPublishAction?.Invoke(
 316            sceneName,
 317            sceneDescription,
 318            sceneScreenshotTexture != null ? Convert.ToBase64String(sceneScreenshotTexture.EncodeToJPG(90)) : "");
 319
 1320        controllers.newProjectDetailsController.SetCustomPublicationInfo(sceneName, sceneDescription);
 321
 322        // NOTE (Santi): This is temporal until we implement the way of return the publish progress from the kernel side
 323        //               Meanwhile we will display a fake progress.
 1324        publishProgressCoroutine = CoroutineStarter.Start(FakePublishProgress());
 325
 1326        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelPublishModal;
 1327        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmPublishModal;
 1328    }
 329
 330    private IEnumerator FakePublishProgress()
 331    {
 7332        while (true)
 333        {
 8334            float newPercentage = Mathf.Clamp(
 335                controllers.publishPopupController.currentProgress + UnityEngine.Random.Range(10f, 30f),
 336                controllers.publishPopupController.currentProgress,
 337                99f);
 338
 8339            controllers.publishPopupController.SetPercentage(newPercentage);
 340
 8341            yield return new WaitForSeconds(UnityEngine.Random.Range(0f, 0.5f));
 342        }
 343    }
 344
 345    public void ExitStart()
 346    {
 1347        if (controllers.buildModeConfirmationModalController.IsViewActive())
 0348            return;
 1349        UnsubscribeConfirmationModal();
 350
 1351        controllers.buildModeConfirmationModalController.OnCancelExit += CancelExitModal;
 1352        controllers.buildModeConfirmationModalController.OnConfirmExit += ConfirmExitModal;
 353
 1354        controllers.buildModeConfirmationModalController.SetActive(true, BuildModeModalType.EXIT);
 355
 1356        OnStartExitAction?.Invoke();
 0357    }
 358
 359    internal void CancelExitModal(BuildModeModalType modalType)
 360    {
 1361        if (modalType != BuildModeModalType.EXIT)
 0362            return;
 363
 1364        controllers.buildModeConfirmationModalController.SetActive(false, BuildModeModalType.EXIT);
 365
 1366        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelExitModal;
 1367        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmExitModal;
 1368    }
 369
 370    internal void ConfirmExitModal(BuildModeModalType modalType)
 371    {
 1372        if (modalType != BuildModeModalType.EXIT)
 0373            return;
 374
 1375        OnLogoutAction?.Invoke();
 376
 1377        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelExitModal;
 1378        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmExitModal;
 379
 1380        controllers.publicationDetailsController.SetDefaultPublicationInfo();
 1381    }
 382
 383    private void UnsubscribeConfirmationModal()
 384    {
 2385        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelPublishModal;
 2386        controllers.buildModeConfirmationModalController.OnCancelExit -= CancelExitModal;
 2387        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmPublishModal;
 2388        controllers.buildModeConfirmationModalController.OnConfirmExit -= ConfirmExitModal;
 2389    }
 390
 391    public void PublishEnd(bool isOk, string message)
 392    {
 2393        if (publishProgressCoroutine != null)
 394        {
 0395            CoroutineStarter.Stop(publishProgressCoroutine);
 0396            publishProgressCoroutine = null;
 397        }
 398
 2399        controllers.publishPopupController.PublishEnd(isOk, message);
 2400    }
 401
 0402    public void SetGizmosActive(string gizmos) { controllers.topActionsButtonsController.SetGizmosActive(gizmos); }
 2403    public void SetParcelScene(ParcelScene parcelScene) { controllers.inspectorController.sceneLimitsController.SetParce
 404
 4405    public void SetPublishBtnAvailability(bool isAvailable, string feedbackMessage = "") { view.SetPublishBtnAvailabilit
 406
 407    #region Catalog
 408
 0409    public BuildModeCatalogSection GetCatalogSectionSelected() { return controllers.sceneCatalogController.GetCurrentSec
 410
 411    private void ShowTooltipForCatalogItemAdapter(PointerEventData data, CatalogItemAdapter adapter)
 412    {
 0413        controllers.tooltipController.SetTooltipText(adapter.GetContent().name);
 0414        controllers.tooltipController.ShowTooltip(data);
 0415    }
 416
 2417    public void RefreshCatalogAssetPack() { view.RefreshCatalogAssetPack(); }
 418
 2419    public void RefreshCatalogContent() { view.RefreshCatalogContent(); }
 420
 421    public void StopInput()
 422    {
 0423        OnStopInput?.Invoke();
 0424        ToggleCatalogIfExpanded();
 0425    }
 426
 427    public void CatalogItemSelected(CatalogItem catalogItem)
 428    {
 1429        OnCatalogItemSelected?.Invoke(catalogItem);
 1430        ToggleCatalogIfExpanded();
 1431    }
 432
 433    public void CatalogItemDropped(CatalogItem catalogItem)
 434    {
 0435        OnCatalogItemDropped?.Invoke(catalogItem);
 0436        ToggleCatalogIfExpanded();
 0437    }
 438
 439    private void ToggleCatalogIfExpanded()
 440    {
 1441        if (controllers.sceneCatalogController.IsCatalogExpanded())
 0442            controllers.sceneCatalogController.ToggleCatalogExpanse();
 1443    }
 444
 445    public void SetVisibilityOfCatalog(bool isVisible)
 446    {
 3447        isCatalogOpen = isVisible;
 3448        view.SetVisibilityOfCatalog(isCatalogOpen);
 449
 3450        if (isVisible)
 2451            OnCatalogOpen?.Invoke();
 2452    }
 453
 454    public void ChangeVisibilityOfCatalog()
 455    {
 1456        isCatalogOpen = !controllers.sceneCatalogController.IsCatalogOpen();
 1457        SetVisibilityOfCatalog(isCatalogOpen);
 1458    }
 459
 460    #endregion
 461
 462    #region SceneLimitInfo
 463
 464    public void ShowSceneLimitsPassed()
 465    {
 0466        if (!isSceneLimitInfoVisibile)
 0467            ChangeVisibilityOfSceneInfo();
 0468    }
 469
 2470    public void UpdateSceneLimitInfo() { controllers.inspectorController.sceneLimitsController.UpdateInfo(); }
 471
 472    public void ChangeVisibilityOfSceneInfo(bool shouldBeVisibile)
 473    {
 2474        isSceneLimitInfoVisibile = shouldBeVisibile;
 2475        view.SetVisibilityOfSceneInfo(isSceneLimitInfoVisibile);
 2476    }
 477
 478    public void ChangeVisibilityOfSceneInfo()
 479    {
 1480        isSceneLimitInfoVisibile = !isSceneLimitInfoVisibile;
 1481        view.SetVisibilityOfSceneInfo(isSceneLimitInfoVisibile);
 1482    }
 483
 484    #endregion
 485
 486    public void ActivateFirstPersonModeUI()
 487    {
 1488        if (view != null)
 1489            view.SetFirstPersonView();
 1490    }
 491
 492    public void ActivateGodModeUI()
 493    {
 1494        if (view != null)
 1495            view.SetGodModeView();
 1496    }
 497
 498    #region EntityInformation
 499
 2500    public void EntityInformationSetEntity(DCLBuilderInWorldEntity entity, ParcelScene scene) { controllers.entityInform
 501
 502    public void ShowEntityInformation(bool activateTransparencyMode = false)
 503    {
 2504        controllers.entityInformationController.Enable();
 2505        controllers.entityInformationController.SetTransparencyMode(activateTransparencyMode);
 2506        controllers.sceneCatalogController.CloseCatalog();
 2507        controllers.tooltipController.HideTooltip();
 508
 2509        if (activateTransparencyMode)
 1510            controllers.catalogBtnController.SetActive(false);
 2511    }
 512
 513    public void HideEntityInformation()
 514    {
 1515        controllers.entityInformationController.Disable();
 1516        controllers.catalogBtnController.SetActive(true);
 517
 1518        if (isCatalogOpen)
 0519            controllers.sceneCatalogController.SetActive(true);
 1520    }
 521
 522    private void OnEntityInformationDisable()
 523    {
 0524        if (isCatalogOpen)
 0525            controllers.sceneCatalogController.SetActive(true);
 0526    }
 527
 528    #endregion
 529
 530    public void SetEntityList(List<DCLBuilderInWorldEntity> entityList)
 531    {
 1532        controllers.inspectorController.SetEntityList(entityList);
 533
 1534        if (view.entityInformation != null)
 0535            view.entityInformation.smartItemListView.SetEntityList(entityList);
 1536    }
 537
 538    public void ChangeVisibilityOfEntityList()
 539    {
 2540        isEntityListVisible = !isEntityListVisible;
 2541        controllers.saveHUDController?.SetSaveViewByEntityListOpen(isEntityListVisible);
 2542        if (isEntityListVisible)
 543        {
 1544            OnEntityListVisible?.Invoke();
 1545            controllers.inspectorController.OpenEntityList();
 1546        }
 547        else
 548        {
 1549            controllers.inspectorController.CloseList();
 550        }
 1551    }
 552
 2553    public void ClearEntityList() { controllers.inspectorController.ClearList(); }
 554
 555    public void ChangeVisibilityOfControls()
 556    {
 1557        isControlsVisible = !isControlsVisible;
 1558        view.SetVisibilityOfControls(isControlsVisible);
 1559    }
 560
 561    public void ChangeVisibilityOfUI()
 562    {
 0563        DataStore.i.builderInWorld.showTaskBar.Set(!IsVisible());
 0564        SetVisibility(!IsVisible());
 0565    }
 566
 567    #region TopButtons
 568
 569    public void ChangeVisibilityOfExtraBtns()
 570    {
 1571        areExtraButtonsVisible = !areExtraButtonsVisible;
 1572        view.SetVisibilityOfExtraBtns(areExtraButtonsVisible);
 1573        timeFromLastClickOnExtraButtons = Time.realtimeSinceStartup;
 1574    }
 575
 576    public void HideExtraBtns()
 577    {
 0578        if ((Time.realtimeSinceStartup - timeFromLastClickOnExtraButtons) <= 0.1f)
 0579            return;
 580
 0581        areExtraButtonsVisible = false;
 0582        controllers.topActionsButtonsController.extraActionsController.SetActive(areExtraButtonsVisible);
 0583    }
 584
 0585    public void SetActionsButtonsInteractable(bool isInteractable) { controllers.topActionsButtonsController.SetActionsI
 586
 0587    public void SetSnapModeActive(bool isActive) { controllers.topActionsButtonsController.SetSnapActive(isActive); }
 588
 0589    public void SetUndoButtonInteractable(bool isInteractable) { controllers.topActionsButtonsController.SetUndoInteract
 0590    public void SetRedoButtonInteractable(bool isInteractable) { controllers.topActionsButtonsController.SetRedoInteract
 591
 592    #endregion
 593
 594    public void SetVisibility(bool visible)
 595    {
 1596        if (view == null)
 0597            return;
 598
 1599        if (IsVisible() && !visible)
 600        {
 0601            view.AnimatorShow(false);
 0602            AudioScriptableObjects.fadeOut.Play(true);
 0603        }
 1604        else if (!IsVisible() && visible)
 605        {
 1606            view.SetActive(true);
 1607            view.AnimatorShow(true);
 1608            AudioScriptableObjects.fadeIn.Play(true);
 609        }
 1610    }
 611
 612    public void Dispose()
 613    {
 1614        if (view == null)
 0615            return;
 1616        else if (view.viewGO != null)
 1617            UnityEngine.Object.Destroy(view.viewGO);
 1618    }
 619
 0620    public void ToggleVisibility() { SetVisibility(!IsVisible()); }
 621
 622    public bool IsVisible()
 623    {
 2624        if (view == null)
 0625            return false;
 626
 2627        return view.isShowHideAnimatorVisible;
 628    }
 629
 0630    public void SceneObjectDroppedInView() { catalogItemDropController.CatalogitemDropped(); }
 631
 1632    internal virtual IBuildModeHUDView CreateView() => BuildModeHUDView.Create();
 633
 634    public void UpdateEntitiesSelection(int numberOfSelectedEntities)
 635    {
 0636        controllers.entityInformationController.UpdateEntitiesSelection(numberOfSelectedEntities);
 0637        controllers.topActionsButtonsController.extraActionsController.SetResetButtonInteractable(numberOfSelectedEntiti
 0638    }
 639
 640    #region Inspector
 641
 642    public void SetVisibilityOfInspector(bool isVisible)
 643    {
 2644        isEntityListVisible = isVisible;
 2645        view.SetVisibilityOfInspector(isVisible);
 2646    }
 647
 648    #endregion
 649
 650}

Methods/Properties

Initialize()
Initialize(BuildModeHUDInitializationModel)
CreateBuildModeControllers()
CreateMainView()
ConfigureSceneCatalogController()
ConfigureEntityInformationController()
ConfigureFirstPersonModeController()
ConfigureShortcutsController()
ConfigureDragAndDropSceneObjectController()
ConfigurePublishBtnController()
ConfigureInspectorBtnController()
ConfigureCatalogBtnController()
ConfigureInspectorController()
ConfigureTopActionsButtonsController()
ConfigureCatalogItemDropController()
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(DCLBuilderInWorldEntity, DCL.Controllers.ParcelScene)
ShowEntityInformation(System.Boolean)
HideEntityInformation()
OnEntityInformationDisable()
SetEntityList(System.Collections.Generic.List[DCLBuilderInWorldEntity])
ChangeVisibilityOfEntityList()
ClearEntityList()
ChangeVisibilityOfControls()
ChangeVisibilityOfUI()
ChangeVisibilityOfExtraBtns()
HideExtraBtns()
SetActionsButtonsInteractable(System.Boolean)
SetSnapModeActive(System.Boolean)
SetUndoButtonInteractable(System.Boolean)
SetRedoButtonInteractable(System.Boolean)
SetVisibility(System.Boolean)
Dispose()
ToggleVisibility()
IsVisible()
SceneObjectDroppedInView()
CreateView()
UpdateEntitiesSelection(System.Int32)
SetVisibilityOfInspector(System.Boolean)