Exemplo n.º 1
0
        public override void Setup()
        {
            const float yBounds = 0.5f;

            // Initial bounds must be set before the base.Setup() is called
            minBounds = new Vector3(MinBounds.x, yBounds, 0.25f);
            m_CustomStartingBounds = new Vector3(MinBounds.x, yBounds, 0.5f);

            base.Setup();

            EditorXRUtils.Instantiate(m_ContentPrefab, m_WorkspaceUI.sceneContainer, false);
            m_MiniWorldUI  = GetComponentInChildren <MiniWorldUI>();
            m_GridMaterial = MaterialUtils.GetMaterialClone(m_MiniWorldUI.grid);

            var resetUI = EditorXRUtils.Instantiate(m_RecenterUIPrefab, m_WorkspaceUI.frontPanel, false).GetComponentInChildren <ResetUI>();

            resetUI.resetButton.onClick.AddListener(ResetChessboard);
            foreach (var mb in resetUI.GetComponentsInChildren <MonoBehaviour>())
            {
                this.ConnectInterfaces(mb);
            }

            var parent = m_WorkspaceUI.frontPanel.parent;

            m_LocatePlayerUI        = EditorXRUtils.Instantiate(m_LocatePlayerPrefab, parent, false).transform;
            m_PlayerDirectionButton = m_LocatePlayerUI.GetChild(0);
            foreach (var mb in m_LocatePlayerUI.GetComponentsInChildren <MonoBehaviour>())
            {
                var button = mb as Button;
                if (button)
                {
                    button.onClick.AddListener(RecenterOnPlayer);
                }
            }

            m_PlayerDirectionArrow = EditorXRUtils.Instantiate(m_PlayerDirectionArrowPrefab, parent, false).transform;

            // Set up MiniWorld
            m_MiniWorld = GetComponentInChildren <MiniWorld>();
            m_MiniWorld.referenceTransform.position   = Vector3.up * k_InitReferenceYOffset * k_InitReferenceScale;
            m_MiniWorld.referenceTransform.localScale = Vector3.one * k_InitReferenceScale;

            // Set up Zoom Slider
            var sliderObject = EditorXRUtils.Instantiate(m_ZoomSliderPrefab, m_WorkspaceUI.frontPanel, false);

            m_ZoomSliderUI                      = sliderObject.GetComponentInChildren <ZoomSliderUI>();
            m_ZoomSliderUI.sliding             += OnSliding;
            m_ZoomSliderUI.zoomSlider.maxValue  = Mathf.Log10(k_ZoomSliderMax);
            m_ZoomSliderUI.zoomSlider.minValue  = Mathf.Log10(k_ZoomSliderMin);
            m_ZoomSliderUI.zoomSlider.direction = Slider.Direction.RightToLeft; // Invert direction for expected ux; zoom in as slider moves left to right
            m_ZoomSliderUI.zoomSlider.value     = Mathf.Log10(k_InitReferenceScale);
            foreach (var mb in m_ZoomSliderUI.GetComponentsInChildren <MonoBehaviour>())
            {
                this.ConnectInterfaces(mb);
            }

            var zoomTooltip = sliderObject.GetComponentInChildren <Tooltip>();

            if (zoomTooltip)
            {
                zoomTooltip.tooltipText = "Drag the Handle to Zoom the Mini World";
            }

            // Propagate initial bounds
            OnBoundsChanged();
        }
Exemplo n.º 2
0
        public override void Setup()
        {
            // Initial bounds must be set before the base.Setup() is called
            minBounds = k_MinBounds;
            m_CustomStartingBounds = minBounds;

            base.Setup();

            var content = EditorXRUtils.Instantiate(m_ContentPrefab, m_WorkspaceUI.sceneContainer, false);

            m_PolyUI = content.GetComponent <PolyUI>();
            foreach (var behavior in content.GetComponentsInChildren <MonoBehaviour>(true))
            {
                this.InjectFunctionalitySingle(behavior);
            }

            var gridView = m_PolyUI.gridView;

            this.ConnectInterfaces(gridView);
            assetData = new List <PolyGridAsset>();

            var sliderObject = EditorXRUtils.Instantiate(m_SliderPrefab, m_WorkspaceUI.frontPanel, false);

            m_ZoomSliderUI = sliderObject.GetComponent <ZoomSliderUI>();
            m_ZoomSliderUI.zoomSlider.minValue = Mathf.Log10(k_MinScale);
            m_ZoomSliderUI.zoomSlider.maxValue = Mathf.Log10(k_MaxScale);
            m_ZoomSliderUI.sliding            += Scale;
            UpdateZoomSliderValue();
            foreach (var mb in m_ZoomSliderUI.GetComponentsInChildren <MonoBehaviour>())
            {
                this.ConnectInterfaces(mb);
            }

            SetupCategoryFilterUI();
            SetupComplextyFilterUI();
            SetupFormatFilterUI();
            SetupSortingUI();

            var zoomTooltip = sliderObject.GetComponentInChildren <Tooltip>();

            if (zoomTooltip)
            {
                zoomTooltip.tooltipText = "Drag the Handle to Zoom the Asset Grid";
            }

            var scrollHandle          = m_PolyUI.scrollHandle;
            var scrollHandleTransform = scrollHandle.transform;

            scrollHandleTransform.SetParent(m_WorkspaceUI.topFaceContainer);
            scrollHandleTransform.localScale    = k_ScrollHandleScale;
            scrollHandleTransform.localPosition = k_ScrollHandlePosition;

            scrollHandle.pointerDown           += OnScrollPointerDown;
            scrollHandle.dragging              += OnScrollDragging;
            scrollHandle.pointerUp             += OnScrollPointerUp;
            m_PolyUI.scrollHandle.hoverStarted += OnScrollHoverStarted;
            m_PolyUI.scrollHandle.hoverEnded   += OnScrollHoverEnded;

            // Propagate initial bounds
            OnBoundsChanged();
        }
Exemplo n.º 3
0
        public override void Setup()
        {
            // Initial bounds must be set before the base.Setup() is called
            minBounds = k_MinBounds;
            m_CustomStartingBounds = k_CustomStartingBounds;

            base.Setup();

            topPanelDividerOffset = k_LeftPaneRatio; // enable & position the top-divider(mask) slightly to the left of workspace center

            var content = EditorXRUtils.Instantiate(m_ContentPrefab, m_WorkspaceUI.sceneContainer, false);

            m_ProjectUI = content.GetComponent <ProjectUI>();
            foreach (var behavior in content.GetComponentsInChildren <MonoBehaviour>(true))
            {
                this.InjectFunctionalitySingle(behavior);
            }

            var assetGridView = m_ProjectUI.assetGridView;

            this.ConnectInterfaces(assetGridView);
            assetGridView.matchesFilter = this.MatchesFilter;
            assetGridView.data          = new List <AssetData>();

            var folderListView = m_ProjectUI.folderListView;

            this.ConnectInterfaces(folderListView);
            folderListView.folderSelected += OnFolderSelected;
            folderData = m_FolderData;

            m_FilterUI = EditorXRUtils.Instantiate(m_FilterPrefab, m_WorkspaceUI.frontPanel, false).GetComponent <FilterUI>();
            foreach (var mb in m_FilterUI.GetComponentsInChildren <MonoBehaviour>())
            {
                this.ConnectInterfaces(mb);
                this.InjectFunctionalitySingle(mb);
            }

            filterList = m_FilterList;

            foreach (var button in m_FilterUI.GetComponentsInChildren <WorkspaceButton>())
            {
                button.clicked += OnButtonClicked;
                button.hovered += OnButtonHovered;
            }

            var sliderObject = EditorXRUtils.Instantiate(m_SliderPrefab, m_WorkspaceUI.frontPanel, false);

            m_ZoomSliderUI = sliderObject.GetComponent <ZoomSliderUI>();
            m_ZoomSliderUI.zoomSlider.minValue = Mathf.Log10(k_MinScale);
            m_ZoomSliderUI.zoomSlider.maxValue = Mathf.Log10(k_MaxScale);
            m_ZoomSliderUI.sliding            += Scale;
            UpdateZoomSliderValue();
            foreach (var mb in m_ZoomSliderUI.GetComponentsInChildren <MonoBehaviour>())
            {
                this.ConnectInterfaces(mb);
                this.InjectFunctionalitySingle(mb);
            }

            var zoomTooltip = sliderObject.GetComponentInChildren <Tooltip>();

            if (zoomTooltip)
            {
                zoomTooltip.tooltipText = "Drag the Handle to Zoom the Asset Grid";
            }

            var scrollHandles = new[]
            {
                m_ProjectUI.folderScrollHandle,
                m_ProjectUI.assetScrollHandle
            };

            foreach (var handle in scrollHandles)
            {
                // Scroll Handle shouldn't move on bounds change
                handle.transform.parent = m_WorkspaceUI.sceneContainer;

                handle.pointerDown += OnScrollPointerDown;
                handle.dragging    += OnScrollDragging;
                handle.pointerUp   += OnScrollPointerUp;
            }

            // Hookup highlighting calls
            m_ProjectUI.assetScrollHandle.pointerDown   += OnAssetGridDragHighlightBegin;
            m_ProjectUI.assetScrollHandle.pointerUp     += OnAssetGridDragHighlightEnd;
            m_ProjectUI.assetScrollHandle.hoverStarted  += OnAssetGridHoverHighlightBegin;
            m_ProjectUI.assetScrollHandle.hoverEnded    += OnAssetGridHoverHighlightEnd;
            m_ProjectUI.folderScrollHandle.pointerDown  += OnFolderPanelDragHighlightBegin;
            m_ProjectUI.folderScrollHandle.pointerUp    += OnFolderPanelDragHighlightEnd;
            m_ProjectUI.folderScrollHandle.hoverStarted += OnFolderPanelHoverHighlightBegin;
            m_ProjectUI.folderScrollHandle.hoverEnded   += OnFolderPanelHoverHighlightEnd;

            // Propagate initial bounds
            OnBoundsChanged();
        }