public void CreateIgloo(Action <bool, SceneLayoutData> callback)
        {
            createCallback = callback;
            SceneLayoutData activeSceneLayoutData = layoutManager.GetActiveSceneLayoutData();

            if (activeSceneLayoutData != null)
            {
                MutableSceneLayout mutableSceneLayout = new MutableSceneLayout();
                SceneLayoutSyncService.ConvertToMutableSceneLayout(mutableSceneLayout, activeSceneLayoutData);
                eventChannel.AddListener <IglooServiceEvents.IglooLayoutCreated>(onIglooCreated);
                iglooService.CreateIglooLayout(mutableSceneLayout, this);
                return;
            }
            Log.LogError(this, "Unable to create igloo. Scene layout data not in data model");
            if (createCallback != null)
            {
                createCallback.InvokeSafe(arg1: false, null);
                createCallback = null;
            }
        }
        public void UpdateAndPublishActiveLayout(Action <bool, SceneLayoutData> callback = null)
        {
            updateAndPublishCallback = callback;
            SceneLayoutData    activeSceneLayoutData = layoutManager.GetActiveSceneLayoutData();
            MutableSceneLayout mutableSceneLayout    = new MutableSceneLayout();

            SceneLayoutSyncService.ConvertToMutableSceneLayout(mutableSceneLayout, activeSceneLayoutData);
            IglooVisibility?visibility = null;

            if (savedIgloosMetaData.IsDirty)
            {
                visibility = savedIgloosMetaData.IglooVisibility;
            }
            if (updateAndPublishCallback != null)
            {
                eventChannel.AddListener <IglooServiceEvents.IglooPublished>(onIglooPublished);
            }
            iglooService.UpdateAndPublish(activeSceneLayoutData.LayoutId, visibility, mutableSceneLayout, this);
            logBIForSavingIglooLayout(activeSceneLayoutData);
        }