예제 #1
0
 void OnDestroy()
 {
     s_Current = null;
     m_TeleportSelector?.Dispose();
     ReflectProjectsManager.Dispose();
     m_DisposeOnDestroy.ForEach(x => x.Dispose());
 }
        public void SetUser(UnityUser user)
        {
            if (user == null || string.IsNullOrEmpty(user.UserId))
            {
                Debug.LogError("Invalid User");
            }

            // Client
            m_AuthClient = new AuthClient(user);

            ReflectProjectsManager.Init(user, this, m_AuthClient);
        }
예제 #3
0
        public override void ApplyPayload <T>(object viewerActionData, ref T stateData, Action onStateDataChanged)
        {
            var    data       = (Project)viewerActionData;
            object boxed      = stateData;
            var    hasChanged = false;

            hasChanged |= SetPropertyValue(ref stateData, ref boxed, nameof(IProgressDataProvider.progressState), SetProgressStateAction.ProgressState.PendingIndeterminate);
            ReflectProjectsManager.DeleteProjectLocally(data);
            if (hasChanged)
            {
                onStateDataChanged?.Invoke();
            }
        }
예제 #4
0
        void OnProjectOpenButtonClick(Project project)
        {
            if (!ReflectProjectsManager.IsReadyForOpening(project))
            {
                return;
            }

            var activeProject = m_ActiveProjectGetter.GetValue();

            if (activeProject?.serverProjectId == project.serverProjectId)
            {
                Dispatcher.Dispatch(OpenDialogAction.From(OpenDialogAction.DialogType.None));
                //if the project already opened, just close landing screen
                return;
            }
            Dispatcher.Dispatch(SetWalkEnableAction.From(false));

            activeProject = project;

            if (activeProject != Project.Empty)
            {
                if (m_NavigationModeGetter.GetValue() != SetNavigationModeAction.NavigationMode.VR)
                {
                    // switch to orbit mode
                    var data = new SetForceNavigationModeAction.ForceNavigationModeTrigger((int)SetNavigationModeAction.NavigationMode.Orbit);
                    Dispatcher.Dispatch(SetForceNavigationModeAction.From(data));
                }

                // first close current Project if open
                Dispatcher.Dispatch(SetStatusMessage.From("Closing {UIStateManager.current.projectStateData.activeProject.name}..."));
            }
            Dispatcher.Dispatch(SetStatusMessage.From($"Opening {activeProject.name}..."));
            Dispatcher.Dispatch(CloseAllDialogsAction.From(null));

            Dispatcher.Dispatch(SetIsOpenWithLinkSharingAction.From(false));
            Dispatcher.Dispatch(SetCachedLinkTokenAction.From(string.Empty));

            Dispatcher.Dispatch(OpenProjectActions <Project> .From(activeProject));
            Dispatcher.Dispatch(ToggleMeasureToolAction.From(ToggleMeasureToolAction.ToggleMeasureToolData.defaultData));
        }
 public void ClearUser()
 {
     ReflectProjectsManager.Dispose();
 }
예제 #6
0
 void Refresh()
 {
     Refresh(ReflectProjectsManager.GetStatus(m_Project));
 }