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();
    }
 private void ConfigureEntityInformationController()
 {
     controllers.entityInformationController.OnPositionChange           += (x) => OnSelectedObjectPositionChange?.Invoke(x);
     controllers.entityInformationController.OnRotationChange           += (x) => OnSelectedObjectRotationChange?.Invoke(x);
     controllers.entityInformationController.OnScaleChange              += (x) => OnSelectedObjectScaleChange?.Invoke(x);
     controllers.entityInformationController.OnNameChange               += (entity, newName) => OnEntityRename?.Invoke(entity, newName);
     controllers.entityInformationController.OnSmartItemComponentUpdate += (entity) => OnEntitySmartItemComponentUpdate?.Invoke(entity);
 }