void Start()
 {
     m_AccessTokenSelector   = UISelectorFactory.createSelector <AccessToken>(ProjectManagementContext <Project> .current, nameof(IProjectDataProvider <Project> .accessToken), OnAccessToken);
     m_ActiveProjectSelector = UISelectorFactory.createSelector <Project>(ProjectManagementContext <Project> .current, nameof(IProjectDataProvider <Project> .activeProject), OnActiveProjectChanged);
     if (m_GraphicManager == null)
     {
         m_GraphicManager = FindObjectOfType <MarkerGraphicManager>();
     }
 }
        public void Setup(IDispatcher dispatcher)
        {
            m_Dispatcher = dispatcher;
            m_MarkerEditContextTarget            = MarkerEditContext.BindTarget(m_MarkerEdit);
            m_MarkerListContextTarget            = MarkerListContext.BindTarget(m_MarkerList);
            m_MarkerDraggableEditorContextTarget = MarkerDraggableEditorContext.BindTarget(m_MarkerDrag);

            DispatchToken = m_Dispatcher.Register <Payload <IViewerAction> >(InvokeOnDispatchMarkers);

            if (m_NavigationModeUIController == null)
            {
                m_NavigationModeUIController = FindObjectOfType <NavigationModeUIController>();
            }
            if (m_MarkerGraphicManager == null)
            {
                m_MarkerGraphicManager = FindObjectOfType <MarkerGraphicManager>();
            }
            if (m_CardSelectionUIController == null)
            {
                m_CardSelectionUIController = FindObjectOfType <ARCardSelectionUIController>();
            }

            // Configure actions in the controller and edit view
            LinkActions(m_MarkerController);
            LinkActions(ref m_MarkerEdit);
            LinkActions(ref m_MarkerList);

            m_NewMarkerButton.onClick.AddListener(OnCreateMarker);
            if (m_SelectionModeButton)
            {
                m_SelectionModeButton.onControlUp.AddListener(ToggleSelectionMode);
            }
            if (m_ScanQRButton)
            {
                m_ScanQRButton.onControlUp.AddListener(OnScanMarkerButton);
            }

            m_MarkerDialogController.OnEditToggled   += HandleEditToggled;
            m_DraggableMarkerPlacement.OnValueUpdate += OnDragMarkerUpdate;
            m_ARModeSelector         = UISelectorFactory.createSelector <SetARModeAction.ARMode>(ARContext.current, nameof(IARModeDataProvider.arMode), OnARModeChange);
            m_NavigationModeSelector = UISelectorFactory.createSelector <SetNavigationModeAction.NavigationMode>(NavigationContext.current, nameof(INavigationDataProvider.navigationMode));
        }