void OnPickPerpendicularAsyncCallback(List <Tuple <GameObject, RaycastHit> > results)
        {
            if (results != null && results.Count > 0)
            {
                SelectObjectMeasureToolAction.IAnchor selectedAnchor = null;
                var selectedObjects        = results.Select(x => x.Item1).Where(x => x.layer != MetadataFilter.k_OtherLayer);
                var selectedAnchorsContext = selectedObjects.Select(r => r.GetComponent <AnchorSelectionContext>()).Where(g => g != null).ToList();
                if (selectedAnchorsContext.Count > 0)
                {
                    selectedAnchor = selectedAnchorsContext[0].LastContext.selectedAnchor;
                }

                Dispatcher.Dispatch(SelectObjectMeasureToolAction.From(selectedAnchor));
            }
        }
        void OnPickPointerAsyncCallback(List <Tuple <GameObject, RaycastHit> > results)
        {
            if (results == null || results.Count == 0)
            {
                Dispatcher.Dispatch(SetStatusMessageWithType.From(
                                        new StatusMessageData()
                {
                    text = MeasureToolUIController.instructionTapOnSurface, type = StatusMessageType.Instruction
                }));
                return;
            }

            SelectObjectMeasureToolAction.IAnchor selectedAnchor = null;
            var selectedObjects        = results.Select(x => x.Item1).Where(x => x.layer != MetadataFilter.k_OtherLayer);
            var selectedAnchorsContext = selectedObjects.Select(r => r.GetComponent <AnchorSelectionContext>()).Where(g => g != null).ToList();

            if (selectedAnchorsContext.Count > 0)
            {
                selectedAnchor = selectedAnchorsContext[0].LastContext.selectedAnchor;
            }

            Dispatcher.Dispatch(SelectObjectMeasureToolAction.From(selectedAnchor));
            Dispatcher.Dispatch(ClearStatusAction.From(true));
            Dispatcher.Dispatch(ClearStatusAction.From(false));

            if (m_MeasureModeGetter() == ToggleMeasureToolAction.MeasureMode.PerpendicularDistance && m_AnchorsList.Count == 1)
            {
                Ray ray         = new Ray();
                var firstAnchor = selectedAnchorsContext[0].LastContext.selectedAnchor;
                if (firstAnchor.type == ToggleMeasureToolAction.AnchorType.Point)
                {
                    var anc = ((PointAnchor)firstAnchor);
                    ray.origin    = anc.position;
                    ray.direction = anc.normal;
                }

                AnchorPicker.Pick(ray, OnPickPerpendicularAsyncCallback);
            }
        }