protected override void MouseMove(MapDocument document, MapViewport vp, OrthographicCamera camera, ViewportEvent e) { var viewport = vp; var point = SnapIfNeeded(camera.ScreenToWorld(e.X, e.Y)); var st = GetStateAtPoint(e.X, e.Y, camera); if (_state == ClipState.Drawing) { _state = ClipState.MovingPoint2; _clipPlanePoint1 = _drawingPoint; _clipPlanePoint2 = point; _clipPlanePoint3 = _clipPlanePoint1 + SnapIfNeeded(camera.GetUnusedCoordinate(new Vector3(128, 128, 128))); } else if (_state == ClipState.MovingPoint1) { // Move point 1 var cp1 = camera.GetUnusedCoordinate(_clipPlanePoint1.Value) + point; if (KeyboardState.Ctrl) { var diff = _clipPlanePoint1 - cp1; _clipPlanePoint2 -= diff; _clipPlanePoint3 -= diff; } _clipPlanePoint1 = cp1; } else if (_state == ClipState.MovingPoint2) { // Move point 2 var cp2 = camera.GetUnusedCoordinate(_clipPlanePoint2.Value) + point; if (KeyboardState.Ctrl) { var diff = _clipPlanePoint2 - cp2; _clipPlanePoint1 -= diff; _clipPlanePoint3 -= diff; } _clipPlanePoint2 = cp2; } else if (_state == ClipState.MovingPoint3) { // Move point 3 var cp3 = camera.GetUnusedCoordinate(_clipPlanePoint3.Value) + point; if (KeyboardState.Ctrl) { var diff = _clipPlanePoint3 - cp3; _clipPlanePoint1 -= diff; _clipPlanePoint2 -= diff; } _clipPlanePoint3 = cp3; } if (st != ClipState.None || _state != ClipState.None && _state != ClipState.Drawn) { viewport.Control.Cursor = Cursors.Cross; } else { viewport.Control.Cursor = Cursors.Default; } }
protected override void MouseMove(MapViewport viewport, OrthographicCamera camera, ViewportEvent e) { var vp = viewport; if (vp == null) { return; } var p = SnapIfNeeded(camera.ScreenToWorld(e.X, e.Y)); var cursor = Cursors.Default; switch (_state) { case State.None: var st = GetStateAtPoint(e.X, e.Y, camera, out _stateCamera); if (st != State.None) { cursor = Cursors.SizeAll; } break; case State.MovingPosition: if (_stateCamera == null) { break; } var newEye = camera.GetUnusedCoordinate(_stateCamera.EyePosition) + p; if (KeyboardState.Ctrl) { _stateCamera.LookPosition += (newEye - _stateCamera.EyePosition); } _stateCamera.EyePosition = newEye; SetViewportCamera(_stateCamera.EyePosition, _stateCamera.LookPosition); break; case State.MovingLook: if (_stateCamera == null) { break; } var newLook = camera.GetUnusedCoordinate(_stateCamera.LookPosition) + p; if (KeyboardState.Ctrl) { _stateCamera.EyePosition += (newLook - _stateCamera.LookPosition); } _stateCamera.LookPosition = newLook; SetViewportCamera(_stateCamera.EyePosition, _stateCamera.LookPosition); break; } vp.Control.Cursor = cursor; }
public override void StartDrag(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 position) { State.Viewport = viewport; State.Action = BoxAction.Drawing; State.OrigStart = State.Start; State.OrigEnd = State.End; var st = RememberedDimensions == null ? Vector3.Zero : camera.GetUnusedCoordinate(RememberedDimensions.Start); var wid = RememberedDimensions == null ? Vector3.Zero : camera.GetUnusedCoordinate(RememberedDimensions.End - RememberedDimensions.Start); State.Start = Tool.SnapIfNeeded(camera.Expand(position) + st); State.End = State.Start + wid; base.StartDrag(document, viewport, camera, e, position); }
public override void EndDrag(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 position) { State.Viewport = null; State.Action = BoxAction.Drawn; State.End = Tool.SnapIfNeeded(camera.Expand(position)) + camera.GetUnusedCoordinate(State.End); State.FixBounds(); base.EndDrag(document, viewport, camera, e, position); }
protected override void MouseUp(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e) { if (e.Button != MouseButtons.Left) { return; } _state = EntityState.Drawn; var loc = SnapIfNeeded(camera.ScreenToWorld(e.X, e.Y)); _location = camera.GetUnusedCoordinate(_location) + loc; }
private IMapObject SelectionTest(OrthographicCamera camera, ViewportEvent e) { // Create a box to represent the click, with a tolerance level var unused = camera.GetUnusedCoordinate(new Vector3(100000, 100000, 100000)); var tolerance = 4 / camera.Zoom; // Selection tolerance of four pixels var used = camera.Expand(new Vector3(tolerance, tolerance, 0)); var add = used + unused; var click = camera.ScreenToWorld(e.X, e.Y); var box = new Box(click - add, click + add); return(GetLineIntersections(box).FirstOrDefault()); }
protected override void MouseDown(MapViewport viewport, OrthographicCamera camera, ViewportEvent e) { if (e.Button != MouseButtons.Left && e.Button != MouseButtons.Right) { return; } _state = EntityState.Moving; var loc = SnapIfNeeded(camera.ScreenToWorld(e.X, e.Y)); _location = camera.GetUnusedCoordinate(_location) + loc; Invalidate(); }
protected override void MouseMove(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e) { if (!Control.MouseButtons.HasFlag(MouseButtons.Left)) { return; } if (_state != EntityState.Moving) { return; } var loc = SnapIfNeeded(camera.ScreenToWorld(e.X, e.Y)); _location = camera.GetUnusedCoordinate(_location) + loc; }
private List <VertexPoint> GetPoints(OrthographicCamera camera, Vector3 position, bool allowMixed, bool topmostOnly, bool oneSolidOnly) { var p = camera.Flatten(position); var d = 5 / camera.Zoom; // Tolerance value = 5 pixels // Order by the unused Vector3 in the view (which is the up axis) descending to get the "closest" point var points = (from pp in GetVisiblePoints() let c = camera.Flatten(pp.Position) where p.X >= c.X - d && p.X <= c.X + d && p.Y >= c.Y - d && p.Y <= c.Y + d let unused = camera.GetUnusedCoordinate(pp.Position) orderby unused.X + unused.Y + unused.Z descending select pp).ToList(); if (!allowMixed && points.Any(x => !x.IsMidpoint)) { points.RemoveAll(x => x.IsMidpoint); } if (points.Count <= 0) { return(points); } var first = points[0]; if (topmostOnly) { points = new List <VertexPoint> { first } } ; if (oneSolidOnly) { points.RemoveAll(x => x.Solid != first.Solid); } return(points); }
public override void Drag(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 lastPosition, Vector3 position) { State.End = Tool.SnapIfNeeded(camera.Expand(position)) + camera.GetUnusedCoordinate(State.End); base.Drag(document, viewport, camera, e, lastPosition, position); }
public override void Drag(MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 lastPosition, Vector3 position) { Position = camera.Expand(position) + camera.GetUnusedCoordinate(Position); base.Drag(viewport, camera, e, lastPosition, position); }
public override void Drag(MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 lastPosition, Vector3 position) { Position = _vmScaleTool.SnapIfNeeded(camera.Expand(position) + camera.GetUnusedCoordinate(Position)); OnDragMoved(); }
public override void Drag(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 lastPosition, Vector3 position) { Position = _tool.SnapToSelection(camera.Expand(position) + camera.GetUnusedCoordinate(Position), camera); OnDragMoved(); }