Пример #1
0
        private void UpdateCursor(Point mousePos, BaseViewport viewport)
        {
            SolidGrabHandles handles = controller.RubberBand.Handles;

            if (currentAction == SolidToolActionType.Transform)
            {
                return;
            }

            SolidGrabHandles.HitStatus hitStatus = (SolidGrabHandles.HitStatus)GetGrableHandleHit(mousePos.X, mousePos.Y, viewport);

            if (IsSelectedSolidAabbHit(mousePos.X, mousePos.Y, viewport) || currentAction == SolidToolActionType.Drag)
            {
                controller.SetCursor(Cursors.SizeAll);
            }
            else if (hitStatus == SolidGrabHandles.HitStatus.None)
            {
                controller.SetCursor(Cursors.Cross);
            }
            else if (handles.Mode == SolidGrabHandles.HandleMode.Resize)
            {
                if (hitStatus == SolidGrabHandles.HitStatus.TopLeft || hitStatus == SolidGrabHandles.HitStatus.BottomRight)
                {
                    controller.SetCursor(Cursors.SizeNWSE);
                }
                else if (hitStatus == SolidGrabHandles.HitStatus.TopRight || hitStatus == SolidGrabHandles.HitStatus.BottomLeft)
                {
                    controller.SetCursor(Cursors.SizeNESW);
                }
                else if (hitStatus == SolidGrabHandles.HitStatus.Left || hitStatus == SolidGrabHandles.HitStatus.Right)
                {
                    controller.SetCursor(Cursors.SizeWE);
                }
                else if (hitStatus == SolidGrabHandles.HitStatus.Top || hitStatus == SolidGrabHandles.HitStatus.Bottom)
                {
                    controller.SetCursor(Cursors.SizeNS);
                }
            }
            else if (handles.Mode == SolidGrabHandles.HandleMode.Skew)
            {
                if (hitStatus == SolidGrabHandles.HitStatus.Left || hitStatus == SolidGrabHandles.HitStatus.Right)
                {
                    controller.SetCursor(Cursors.SizeNS);
                }
                else if (hitStatus == SolidGrabHandles.HitStatus.Top || hitStatus == SolidGrabHandles.HitStatus.Bottom)
                {
                    controller.SetCursor(Cursors.SizeWE);
                }
            }
            else if (handles.Mode == SolidGrabHandles.HandleMode.Rotate)
            {
                controller.SetCursor(EditorForm.Rotate);
            }
        }
Пример #2
0
        public SkewTransformation(Matrix4 viewportMatrix, Vector3 start, Vector3 end, Matrix4 transformation,
                                  SolidGrabHandles.HitStatus hitStatus)
        {
            this.deltaStart     = start;
            this.deltaEnd       = end;
            this.hitStatus      = hitStatus;
            this.transformation = transformation;

            // create mask vectors, transform mask vectors to viewport space
            horizontalMaskVector = MathExtensions.KeepVectorAbsolute(Vector3.UnitX.TransformL(viewportMatrix));
            verticalMaskVector   = MathExtensions.KeepVectorAbsolute(Vector3.UnitY.TransformL(viewportMatrix));
        }
Пример #3
0
        public ResizeTransformation(Matrix4 transform, Vector3 start, Vector3 end, SolidGrabHandles.HitStatus hitStatus,
                                    int gridSize)
        {
            rootBounds     = null;
            deltaStart     = start;
            deltaEnd       = end;
            this.hitStatus = hitStatus;
            this.gridSize  = gridSize;
            this.transform = transform;

            // create mask vectors, transform mask vectors to viewport space
            horizontalMaskVector = MathExtensions.KeepVectorAbsolute(Vector3.UnitX.TransformL(transform));
            verticalMaskVector   = MathExtensions.KeepVectorAbsolute(Vector3.UnitY.TransformL(transform));
            depthMaskVector      = Vector3.UnitZ.TransformL(transform);
        }