Пример #1
0
        private void vpRoot_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (currentDragStrategy == null)
            {
                var positionInfo    = GetPosition3D(e);
                var primitiveVisual = PrimitivesPickService.PickPrimitiveVisual(viewport3d, positionInfo.Pos2D);
                if (primitiveVisual != null)
                {
                    var primitiveData = PrimitivesPickService.GetPrimitiveData(primitiveVisual);
                    viewModel.SelectPrimitive(primitiveData);

                    primitiveData.MatchClass <NewPrimitive>(_ => currentDragStrategy     = newPrimitiveDragStrategy);
                    primitiveData.MatchClass <SnappedPrimitive>(_ => currentDragStrategy = snappedDragStrategy);
                    Debug.Assert(currentDragStrategy != null);

                    currentDragStrategy.OnMouseDown(GetPosition3D(e), Tuple.Create(primitiveVisual, primitiveData));
                    vpRoot.CaptureMouse();
                }
                else
                {
                    viewModel.UnselectPrimitives();
                }
            }
        }