コード例 #1
0
        void OnToolStateDataChanged(ExternalToolStateData toolData)
        {
            if (!UIStateManager.current.stateData.VREnable)
            {
                return;
            }

            var data = toolData.measureToolStateData;

            if (m_CachedMeasureToolStateData == null || m_CachedMeasureToolStateData.Value.toolState != data.toolState)
            {
                if (data.toolState)
                {
                    m_CanSelect           = true;
                    m_IsMeasureToolEnable = true;
                    m_SelectionTarget.gameObject.SetActive(true);
                }
                else
                {
                    m_CanSelect           = false;
                    m_IsMeasureToolEnable = false;
                    m_SelectionTarget.gameObject.SetActive(false);
                    CleanCache();
                }

                m_CachedMeasureToolStateData = data;
            }
        }
コード例 #2
0
 void OnExternalToolChanged(ExternalToolStateData data)
 {
     if (m_CachedMeasureToolStateData != data.measureToolStateData)
     {
         m_CachedMeasureToolStateData = data.measureToolStateData;
         CheckJoystickAvailable();
     }
 }
コード例 #3
0
        void OnStateDataChanged(ExternalToolStateData externalToolData)
        {
            var data = externalToolData.measureToolStateData;

            if (m_CachedMeasureToolStateData != data)
            {
                if (m_CachedMeasureToolStateData == null || m_CachedMeasureToolStateData.Value.toolState != data.toolState)
                {
                    if (data.toolState)
                    {
                        InitCursor();
                        m_ResetButton.gameObject.SetActive(true);
                        m_InputActionAsset["MeasureTool/Select"].performed += OnPointerUp;
                        m_InputActionAsset["VR/Select"].performed          += OnPointerUp;
                        m_InputActionAsset["MeasureTool/Select"].Enable();
                    }
                    else
                    {
                        m_ResetButton.gameObject.SetActive(false);
                        m_InputActionAsset["MeasureTool/Select"].performed -= OnPointerUp;
                        m_InputActionAsset["VR/Select"].performed          -= OnPointerUp;
                        OnReset();
                        m_VRMeasureTool.OnReset();
                    }
                }

                if (m_CachedMeasureToolStateData == null || m_CachedMeasureToolStateData.Value.measureFormat != data.measureFormat)
                {
                    //TODO: reset the current selection
                }

                if (m_CachedMeasureToolStateData == null || m_CachedMeasureToolStateData.Value.measureMode != data.measureMode)
                {
                    //TODO: update the current value of the measure
                }

                if (m_CachedMeasureToolStateData == null || m_CachedMeasureToolStateData.Value.selectionType != data.selectionType)
                {
                    m_AnchorSelection.SetAnchorPickerSelectionType(data.selectionType);

                    if (data.toolState)
                    {
                        OnReset();
                    }

                    //TODO: update the Cursors style with the current selectionType
                }

                if (m_CachedMeasureToolStateData == null || m_CachedMeasureToolStateData.Value.selectedAnchorsContext != data.selectedAnchorsContext)
                {
                    // Create Point
                    if (m_CreatePointOnScreen)
                    {
                        if (!m_CurrentCursorA.activeSelf)
                        {
                            m_AnchorSelection.OnStateDataChanged(data, m_CurrentCursorA);
                        }
                        else
                        {
                            m_AnchorSelection.OnStateDataChanged(data, m_CurrentCursorB);
                            m_AnchorSelection.SetLineUI();
                        }

                        m_CreatePointOnScreen = false;
                        return;
                    }

                    // Drag Existing Point
                    m_AnchorSelection.OnStateDataChanged(data);
                    if (m_CurrentCursorB.activeSelf)
                    {
                        m_AnchorSelection.SetLineUI();
                    }
                }

                m_CachedMeasureToolStateData = data;
            }
        }