Exemple #1
0
        public void SelectARMode(SetARModeAction.ARMode arMode)
        {
            if (arMode == SetARModeAction.ARMode.None)
            {
                return;
            }

            Dispatcher.Dispatch(SetWalkEnableAction.From(false));

            var currentNavigationMode = m_NavigationModeSelector.GetValue() == SetNavigationModeAction.NavigationMode.Walk
                ? SetNavigationModeAction.NavigationMode.Orbit
                : m_NavigationModeSelector.GetValue();

            if (currentNavigationMode != SetNavigationModeAction.NavigationMode.AR)
            {
                Dispatcher.Dispatch(UnloadSceneActions <Project> .From(UIStateManager.current.GetSceneDictionary()[currentNavigationMode]));
                Dispatcher.Dispatch(LoadSceneActions <Project> .From(UIStateManager.current.GetSceneDictionary()[SetNavigationModeAction.NavigationMode.AR]));
            }

            Dispatcher.Dispatch(OpenDialogAction.From(OpenDialogAction.DialogType.None));
            Dispatcher.Dispatch(ClearStatusAction.From(true));
            Dispatcher.Dispatch(ClearStatusAction.From(false));
            Dispatcher.Dispatch(SetInstructionMode.From(false));
            Dispatcher.Dispatch(CloseAllDialogsAction.From(null));
            Dispatcher.Dispatch(SetNavigationModeAction.From(SetNavigationModeAction.NavigationMode.AR));
            Dispatcher.Dispatch(SetARModeAction.From(arMode));
        }
        void OnDestroy()
        {
            Dispatcher.Dispatch(SetARModeAction.From(SetARModeAction.ARMode.None));

            StopAllCoroutines();

            if (m_MARSCamera != null)
            {
                m_MARSCamera.enabled = false;
            }

            if (UIStateManager.current != null && m_ARPlacementStateDataSelector.GetValue().placementRulesGameObject != null)
            {
                DestroyImmediate(m_ARPlacementStateDataSelector.GetValue().placementRulesGameObject);
            }

            UIStateManager.current.ResetSession();
            UIStateManager.current.PauseSession();

            // remove input system hooks
            m_InputActionAsset["Placement Rotate Action"].performed -= OnPlacementRotateAction;
            m_InputActionAsset["Placement Scale Action"].started    -= OnPlacementScaleActionStarted;
            m_InputActionAsset["Placement Scale Action"].performed  -= OnPlacementScaleAction;

            m_ARPlacementStateDataSelector = null;
            m_DisposeOnDestroy.ForEach(x => x.Dispose());
        }
Exemple #3
0
 void ARCardClicked(SetARModeAction.ARMode arMode)
 {
     Dispatcher.Dispatch(SetARModeAction.From(arMode));
     Dispatcher.Dispatch(SetDeltaDNAButtonAction.From($"ARMode_{arMode}"));
     SelectARMode(arMode);
 }