コード例 #1
0
        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);
        }
コード例 #2
0
 void OnProjectStateDataChanged(UIProjectStateData data)
 {
     if (data.rootBounds != m_InitialCameraBounds)
     {
         m_InitialCameraBounds = data.rootBounds;
         OnResetButtonClicked(); // use dispatch to ensure XR cameras also properly change
     }
 }
コード例 #3
0
 void OnProjectStateChanged(UIProjectStateData projectData)
 {
     if (m_CachedProjectStateData != projectData && m_CachedARToolStateData != null)
     {
         m_CachedProjectStateData = projectData;
         UpdatePlacementState();
     }
 }
コード例 #4
0
 void OnProjectStateDataChanged(UIProjectStateData data)
 {
     if (data.projectSortData != m_CurrentProjectSortData)
     {
         m_CurrentProjectSortData = data.projectSortData;
         UpdateHeader();
     }
 }
コード例 #5
0
 void OnProjectStateDataChanged(UIProjectStateData data)
 {
     if (data.activeProject != m_CurrentActiveProject)
     {
         m_DialogButton.interactable = data.activeProject != Project.Empty;
         m_CurrentActiveProject      = data.activeProject;
     }
 }
コード例 #6
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();
            }
        }
コード例 #7
0
        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;
        }
コード例 #8
0
        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());
            }
        }
コード例 #9
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;
            }
        }
コード例 #10
0
        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;
            }
        }
コード例 #11
0
        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();
            }
        }
コード例 #12
0
        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();
            }
        }
コード例 #13
0
        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();
                }
            }
        }
コード例 #14
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;
            }
        }
コード例 #15
0
 void OnProjectStateDataChanged(UIProjectStateData data)
 {
     CheckButtonValidations();
 }
コード例 #16
0
 void OnProjectStateDataChanged(UIProjectStateData data)
 {
     m_ProjectListButton.interactable = data.activeProject != Project.Empty;
 }