public bool Apply(ref Payload <ActionTypes> payload) { bool proceedToInvocation = true; switch (payload.ActionType) { case ActionTypes.OpenProject: { UIProjectStateData projectData = (UIProjectStateData)payload.Data; TrackViewerOpenProject(UIStateManager.current.sessionStateData.sessionState.user?.UserId, projectData.activeProject.projectId); break; } case ActionTypes.Login: case ActionTypes.Logout: case ActionTypes.SetToolState: case ActionTypes.OpenDialog: case ActionTypes.CloseAllDialogs: case ActionTypes.SetStatus: case ActionTypes.ClearStatus: case ActionTypes.Failure: break; } return(proceedToInvocation); }
void OnProjectStateDataChanged(UIProjectStateData data) { if (data.rootBounds != m_InitialCameraBounds) { m_InitialCameraBounds = data.rootBounds; OnResetButtonClicked(); // use dispatch to ensure XR cameras also properly change } }
void OnProjectStateChanged(UIProjectStateData projectData) { if (m_CachedProjectStateData != projectData && m_CachedARToolStateData != null) { m_CachedProjectStateData = projectData; UpdatePlacementState(); } }
void OnProjectStateDataChanged(UIProjectStateData data) { if (data.projectSortData != m_CurrentProjectSortData) { m_CurrentProjectSortData = data.projectSortData; UpdateHeader(); } }
void OnProjectStateDataChanged(UIProjectStateData data) { if (data.activeProject != m_CurrentActiveProject) { m_DialogButton.interactable = data.activeProject != Project.Empty; m_CurrentActiveProject = data.activeProject; } }
void OnProjectStateDataChanged(UIProjectStateData data) { m_ObjectPicker = data.objectPicker; if (data.objectSelectionInfo != m_CurrentObjectSelectionInfo) { m_CurrentObjectSelectionInfo = data.objectSelectionInfo; if (m_SelectedDatas.Any(s => s.userId == data.objectSelectionInfo.userId)) { var selectedData = m_SelectedDatas.First(s => s.userId == data.objectSelectionInfo.userId); m_SelectedDatas.Remove(selectedData); } var selectedObject = data.objectSelectionInfo.CurrentSelectedObject(); if (selectedObject != null) { var metadata = selectedObject.GetComponentInParent <Metadata>(); if (metadata != null) { selectedObject = metadata.gameObject; } else { selectedObject = null; } } if (data.objectSelectionInfo.userId == m_CurrentUserId) { m_CurrentSelectedGameObject = selectedObject; } if (data.objectSelectionInfo.CurrentSelectedObject() != null) { m_SelectedDatas.Add(new SelectionData { userId = data.objectSelectionInfo.userId, selectedObject = selectedObject, colorId = data.objectSelectionInfo.colorId }); } UpdateMultiSelection(); } if (data.highlightFilter != m_CurrentHighlightFilter) { m_CurrentHighlightFilter = data.highlightFilter; StartCoroutine(WaitBeforeUpdateHighlight()); } if (data.activeProject != m_CachedActiveProject) { m_CachedActiveProject = data.activeProject; m_SelectedDatas.Clear(); UpdateMultiSelection(); } }
void OnProjectStateDataChanged(UIProjectStateData data) { if (data.rootBounds != m_InitialCameraBounds) { m_InitialCameraBounds = data.rootBounds; OnResetButtonClicked(); // use dispatch to ensure XR cameras also properly change } m_FocusButton.interactable = UIStateManager.current.projectStateData.objectSelectionInfo.CurrentSelectedObject() != null; }
void OnProjectStateDataChanged(UIProjectStateData data) { if (data.objectSelectionInfo != m_CurrentObjectSelectionInfo) { m_CurrentObjectSelectionInfo = data.objectSelectionInfo; if (data.objectSelectionInfo.selectedObjects == null || data.objectSelectionInfo.selectedObjects.Count == 0) { ClearBimList(); return; } // TODO: handle selecting multiple objects var selectedObject = data.objectSelectionInfo.CurrentSelectedObject(); var metadata = selectedObject.GetComponent <Metadata>(); if (metadata == null) { while (selectedObject.transform.parent != null) { selectedObject = selectedObject.transform.parent.gameObject; metadata = selectedObject.GetComponent <Metadata>(); if (metadata != null) { break; } } if (metadata == null) { return; } } ClearBimList(); m_BimGroupDropdown.options.Clear(); foreach (var group in metadata.SortedByGroup()) { m_BimGroupDropdown.options.Add(new TMP_Dropdown.OptionData(group.Key)); foreach (var parameter in group.Value) { if (parameter.Value.visible) { CreateBimListItem(group.Key, parameter.Key, parameter.Value.value); } } } // default select index = 0, StartCoroutine(SetDefaultGroup()); } }
void OnProjectStateDataChanged(UIProjectStateData data) { m_ObjectPicker = data.objectPicker; m_IsMetadataFilterActive = !string.IsNullOrEmpty(data.highlightFilter.filterKey) || !string.IsNullOrEmpty(data.highlightFilter.groupKey); if (data.objectSelectionInfo != m_CurrentObjectSelectionInfo) { ResetSelectedObjectHighlight(); var selectedObject = data.objectSelectionInfo.CurrentSelectedObject(); if (selectedObject != null) { var metadata = selectedObject.GetComponent <Metadata>(); if (metadata == null) { while (selectedObject.transform.parent != null) { selectedObject = selectedObject.transform.parent.gameObject; metadata = selectedObject.GetComponent <Metadata>(); if (metadata != null) { break; } } } if (metadata != null) { m_CurrentLayer = selectedObject.layer; } else { selectedObject = null; } } m_CurrentSelectedGameObject = selectedObject; m_CurrentObjectSelectionInfo = data.objectSelectionInfo; UpdateSelectedObjectHighlight(); } if (data.highlightFilter != m_CurrentHighlightFilter) { if (m_CurrentSelectedGameObject != null) { m_CurrentLayer = m_CurrentSelectedGameObject.layer; UpdateSelectedObjectHighlight(); } m_CurrentHighlightFilter = data.highlightFilter; } }
void OnProjectStateDataChanged(UIProjectStateData data) { if (data.objectSelectionInfo != m_CurrentObjectSelectionInfo && (data.objectSelectionInfo.userId == m_CurrentUserId || data.objectSelectionInfo.userId == UIStateManager.current.roomConnectionStateData.localUser.matchmakerId)) { var oldSelectedObject = m_CurrentObjectSelectionInfo.CurrentSelectedObject(); var currentSelectedObject = data.objectSelectionInfo.CurrentSelectedObject(); m_CurrentObjectSelectionInfo = data.objectSelectionInfo; if (currentSelectedObject != oldSelectedObject) { ClearBimList(); m_BimGroupDropdown.options.Clear(); m_BimGroupDropdown.options.Add(k_AllInfoOption); } var isSelected = currentSelectedObject != null; m_NoSelectionText.gameObject.SetActive(!isSelected); if (isSelected) { var metadata = currentSelectedObject.GetComponentInParent <Metadata>(); foreach (var group in metadata.SortedByGroup()) { m_BimGroupDropdown.options.Add(new OptionData(group.Key)); foreach (var parameter in group.Value) { if (parameter.Value.visible) { CreateBimListItem(group.Key, parameter.Key, parameter.Value.value); } } } int targetIndex = 0; m_BimGroupDropdown.SetValueWithoutNotify(targetIndex); // Cant notify or this will trigger the valueChanged and do a dispatch inside a dispatch m_CurrentBimGroup = m_BimGroupDropdown.options[targetIndex].text; m_BimGroupDropdown.RefreshShownValue(); RefreshShownBimItems(); } } if (data.bimSearchString != m_CachedSearchString) { SearchBimItem(data.bimSearchString); m_CachedSearchString = data.bimSearchString; } }
void OnProjectStateDataChanged(UIProjectStateData data) { if (data.activeProject != m_CurrentActiveProject) { m_CurrentActiveProject = data.activeProject; m_ActiveProjectListItem = m_ProjectListItems.FirstOrDefault(item => item.room.project == m_CurrentActiveProject); } if (m_ActiveProjectListItem != null && data.activeProjectThumbnail != m_ActiveProjectListItem.projectThumbnail) { m_ActiveProjectListItem.projectThumbnail = data.activeProjectThumbnail; } if (data.projectSortData != m_CurrentProjectSortData) { m_CurrentProjectSortData = data.projectSortData; SortProjects(); } }
void OnProjectStateDataChanged(UIProjectStateData data) { if (data.activeProject != m_CurrentActiveProject) { m_DialogButton.interactable = data.activeProject != Project.Empty; m_CurrentActiveProject = data.activeProject; m_ActiveProjectListItem = m_ProjectListItems.FirstOrDefault(item => item.project == m_CurrentActiveProject); } if (m_ActiveProjectListItem != null && data.activeProjectThumbnail != m_ActiveProjectListItem.projectThumbnail) { m_ActiveProjectListItem.projectThumbnail = data.activeProjectThumbnail; } if (data.projectSortMethod != m_CurrentProjectSortMethod) { m_CurrentProjectSortMethod = data.projectSortMethod; SortProjects(); } }
void OnProjectStateDataChanged(UIProjectStateData data) { if (data.objectSelectionInfo != m_CurrentObjectSelectionInfo) { var oldSelectedObject = m_CurrentObjectSelectionInfo.CurrentSelectedObject(); var currentSelectedObject = data.objectSelectionInfo.CurrentSelectedObject(); m_CurrentObjectSelectionInfo = data.objectSelectionInfo; if (currentSelectedObject != oldSelectedObject) { ClearBimList(); m_BimGroupDropdown.options.Clear(); m_BimGroupDropdown.options.Add(k_AllInfoOption); } if (currentSelectedObject != null) { var metadata = currentSelectedObject.GetComponentInParent <Metadata>(); foreach (var group in metadata.SortedByGroup()) { m_BimGroupDropdown.options.Add(new OptionData(group.Key)); foreach (var parameter in group.Value) { if (parameter.Value.visible) { CreateBimListItem(group.Key, parameter.Key, parameter.Value.value); } } } int targetIndex = 0; m_BimGroupDropdown.SetValueWithoutNotify(targetIndex); // Cant notify or this will trigger the valueChanged and do a dispatch inside a dispatch m_CurrentBimGroup = m_BimGroupDropdown.options[targetIndex].text; m_BimGroupDropdown.RefreshShownValue(); RefreshShownBimItems(); } } }
void OnProjectStateDataChanged(UIProjectStateData data) { if (!EnumerableExtension.SafeSequenceEquals(data.filterGroupList, m_CurrentFilterGroupList)) { // fill filter group Dropdown m_FilterGroupDropdown.options.Clear(); if (data.filterGroupList.Count == 0) { // show no data ClearFilterList(); m_FilterGroupDropdown.interactable = false; m_FilterGroupDropdown.options.Add(k_NoCategoryOption); m_NoDataText.gameObject.SetActive(true); m_DropdownMask.SetActive(true); } else { m_FilterGroupDropdown.interactable = true; m_NoDataText.gameObject.SetActive(false); m_DropdownMask.SetActive(false); var filterGroupList = data.filterGroupList; foreach (string group in filterGroupList) { m_FilterGroupDropdown.options.Add(new TMP_Dropdown.OptionData(group)); } // default select index = 0, StartCoroutine(SetDefaultGroup()); } m_CurrentFilterGroupList = data.filterGroupList; } if (!EnumerableExtension.SafeSequenceEquals(data.filterItemInfos, m_CurrentFilterKeys)) { ClearFilterList(); foreach (var filterItemInfo in data.filterItemInfos) { CreateFilterListItem(filterItemInfo); } m_CurrentFilterKeys = data.filterItemInfos; } if (data.lastChangedFilterItem != m_LastChangedFilterItem) { var filterItemInfo = data.lastChangedFilterItem; var filterListItem = m_ActiveFilterListItem.SingleOrDefault(e => e.groupKey == filterItemInfo.groupKey && e.filterKey == filterItemInfo.filterKey); if (filterListItem != null) { filterListItem.SetVisible(filterItemInfo.visible); } m_LastChangedFilterItem = data.lastChangedFilterItem; } if (data.highlightFilter != m_CurrentHighlightFilter) { var filterListItem = m_ActiveFilterListItem.SingleOrDefault(e => e.groupKey == m_CurrentHighlightFilter.groupKey && e.filterKey == m_CurrentHighlightFilter.filterKey); if (filterListItem != null) { filterListItem.SetHighlight(false); } filterListItem = m_ActiveFilterListItem.SingleOrDefault(e => e.groupKey == data.highlightFilter.groupKey && e.filterKey == data.highlightFilter.filterKey); if (filterListItem != null) { filterListItem.SetHighlight(true); } m_CurrentHighlightFilter = data.highlightFilter; } }
void OnProjectStateDataChanged(UIProjectStateData data) { CheckButtonValidations(); }
void OnProjectStateDataChanged(UIProjectStateData data) { m_ProjectListButton.interactable = data.activeProject != Project.Empty; }