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 OnListItemClicked(string groupKey, string filterKey) { var highlightFilterInfo = new HighlightFilterInfo { groupKey = groupKey, filterKey = filterKey }; UIStateManager.current.Dispatcher.Dispatch(Payload <ActionTypes> .From(ActionTypes.SetHighlightFilter, highlightFilterInfo)); }
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 OnListItemClicked(string groupKey, string filterKey) { var highlightFilterInfo = new HighlightFilterInfo { groupKey = groupKey, filterKey = filterKey }; // Toggle like behaviour if (highlightFilterInfo == m_CachedHighlightFilter) { highlightFilterInfo = default; } Dispatcher.Dispatch(SetHighlightFilterAction.From(highlightFilterInfo)); Dispatcher.Dispatch(SetDeltaDNAButtonAction.From($"BimFilter_{groupKey}_{filterKey}")); }
void OnHighlightFilterInfoChanged(HighlightFilterInfo newData) { var filterListItem = m_ActiveFilterListItem.SingleOrDefault(e => e.groupKey == m_CachedHighlightFilter.groupKey && e.filterKey == m_CachedHighlightFilter.filterKey); if (filterListItem != null) { filterListItem.SetHighlight(false); } filterListItem = m_ActiveFilterListItem.SingleOrDefault(e => e.groupKey == newData.groupKey && e.filterKey == newData.filterKey); if (filterListItem != null) { filterListItem.SetHighlight(true); } m_CachedHighlightFilter = newData; }
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; } }