Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        void OnListItemClicked(string groupKey, string filterKey)
        {
            var highlightFilterInfo = new HighlightFilterInfo
            {
                groupKey  = groupKey,
                filterKey = filterKey
            };

            UIStateManager.current.Dispatcher.Dispatch(Payload <ActionTypes> .From(ActionTypes.SetHighlightFilter,
                                                                                   highlightFilterInfo));
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 6
0
        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;
            }
        }