void OnSelectedAnchorsDataChanged(SelectObjectMeasureToolAction.IAnchor newData) { // Create Point if (!m_OnDrag) { if (!m_CurrentCursorA.activeSelf) { m_AnchorSelection?.OnStateDataChanged(newData, m_CurrentCursorA); return; } if (!m_CurrentCursorB.activeSelf) { m_AnchorSelection.OnStateDataChanged(newData, m_CurrentCursorB); m_AnchorSelection.SetLineUI(); return; } } // Drag Existing Point m_AnchorSelection?.OnStateDataChanged(newData); if (m_CurrentCursorB.activeSelf) { m_AnchorSelection.SetLineUI(); } }
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; } }