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); } }
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)); }
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); }