public void SetUp()
        {
            testControllers = new BuildModeHUDInitializationModel
            {
                tooltipController                    = Substitute.For <ITooltipController>(),
                feedbackTooltipController            = Substitute.For <ITooltipController>(),
                sceneCatalogController               = Substitute.For <ISceneCatalogController>(),
                quickBarController                   = Substitute.For <IQuickBarController>(),
                entityInformationController          = Substitute.For <IEntityInformationController>(),
                firstPersonModeController            = Substitute.For <IFirstPersonModeController>(),
                shortcutsController                  = Substitute.For <IShortcutsController>(),
                publishPopupController               = Substitute.For <IPublishPopupController>(),
                dragAndDropSceneObjectController     = Substitute.For <IDragAndDropSceneObjectController>(),
                publishBtnController                 = Substitute.For <IPublishBtnController>(),
                inspectorBtnController               = Substitute.For <IInspectorBtnController>(),
                catalogBtnController                 = Substitute.For <ICatalogBtnController>(),
                inspectorController                  = Substitute.For <IInspectorController>(),
                buildModeConfirmationModalController = Substitute.For <IBuildModeConfirmationModalController>(),
                topActionsButtonsController          = Substitute.For <ITopActionsButtonsController>(),
                saveHUDController                    = Substitute.For <ISaveHUDController>(),
                newProjectDetailsController          = Substitute.For <IPublicationDetailsController>(),
                publicationDetailsController         = Substitute.For <IPublicationDetailsController>()
            };

            buildModeHUDView = BuildModeHUDView.Create();
            buildModeHUDView.Initialize(testControllers);
        }
    public BuildModeHUDController()
    {
        view = UnityEngine.Object.Instantiate(Resources.Load <GameObject>("BuildModeHUD")).GetComponent <BuildModeHUDView>();

        view.name = "_BuildModeHUD";
        view.gameObject.SetActive(false);

        catalogItemDropController = new CatalogItemDropController();

        buildModeEntityListController = view.GetComponentInChildren <BuilderInWorldEntityListController>();
        buildModeEntityListController = view.entityListController;
        entityInformationController   = view.entityInformationController;

        entityInformationController.OnPositionChange           += (x) => OnSelectedObjectPositionChange?.Invoke(x);
        entityInformationController.OnRotationChange           += (x) => OnSelectedObjectRotationChange?.Invoke(x);
        entityInformationController.OnScaleChange              += (x) => OnSelectedObjectScaleChange?.Invoke(x);
        entityInformationController.OnNameChange               += (entity, newName) => OnEntityRename?.Invoke(entity, newName);
        entityInformationController.OnSmartItemComponentUpdate += (entity) => OnEntitySmartItemComponentUpdate?.Invoke(entity);

        catalogItemDropController.catalogGroupListView = view.catalogGroupListView;
        catalogItemDropController.catalogGroupListView = view.catalogGroupListView;

        buildModeEntityListController.OnEntityClick            += (x) => OnEntityClick(x);
        buildModeEntityListController.OnEntityDelete           += (x) => OnEntityDelete(x);
        buildModeEntityListController.OnEntityLock             += (x) => OnEntityLock(x);
        buildModeEntityListController.OnEntityChangeVisibility += (x) => OnEntityChangeVisibility(x);
        buildModeEntityListController.OnEntityRename           += (entity, newName) => OnEntityRename(entity, newName);

        buildModeEntityListController.CloseList();

        view.OnCatalogItemDrop                += () => catalogItemDropController.CatalogitemDropped();
        view.OnChangeModeAction               += () => OnChangeModeAction?.Invoke();
        view.OnExtraBtnsClick                 += ChangeVisibilityOfExtraBtns;
        view.OnControlsVisibilityAction       += ChangeVisibilityOfControls;
        view.OnChangeUIVisbilityAction        += ChangeVisibilityOfUI;
        view.OnSceneLimitInfoChangeVisibility += ChangeVisibilityOfSceneInfo;
        view.OnSceneLimitInfoControllerChangeVisibilityAction += ChangeVisibilityOfSceneInfo;
        view.OnSceneCatalogControllerChangeVisibilityAction   += ChangeVisibilityOfCatalog;


        view.OnTranslateSelectionAction += () => OnTranslateSelectedAction?.Invoke();
        view.OnRotateSelectionAction    += () => OnRotateSelectedAction?.Invoke();
        view.OnScaleSelectionAction     += () => OnScaleSelectedAction?.Invoke();
        view.OnResetSelectedAction      += () => OnResetAction?.Invoke();
        view.OnDuplicateSelectionAction += () => OnDuplicateSelectedAction?.Invoke();
        view.OnDeleteSelectionAction    += () => OnDeleteSelectedAction?.Invoke();

        catalogItemDropController.OnCatalogItemDropped += CatalogItemSelected;
        view.OnCatalogItemSelected += CatalogItemSelected;
        view.OnStopInput           += () => OnStopInput?.Invoke();
        view.OnResumeInput         += () => OnResumeInput?.Invoke();


        view.OnEntityListChangeVisibilityAction += () => ChangeVisibilityOfEntityList();

        view.OnTutorialAction += () => OnTutorialAction?.Invoke();
        view.OnPublishAction  += () => OnPublishAction?.Invoke();
        view.OnLogoutAction   += () => OnLogoutAction?.Invoke();
    }
 internal virtual IBuildModeHUDView CreateView() => BuildModeHUDView.Create();