private void HandleMagicWandClick(InputLibrary.Cursor cursor) { int minX; int minY; int maxX; int maxY; var camera = imageRegionSelectionControl1.SystemManagers.Renderer.Camera; float worldX; float worldY; camera.ScreenToWorld(cursor.X, cursor.Y, out worldX, out worldY);; InspectableTexture.GetOpaqueWandBounds((int)worldX, (int)worldY, out minX, out minY, out maxX, out maxY); bool hasValidSelection = minX > 0 && maxX > 0; if (hasValidSelection) { var texture = imageRegionSelectionControl1.CurrentTexture; SetSelectionTextureCoordinates(minY, maxY, minX, maxX); EndRegionChanged?.Invoke(); } }
protected void ApplyCursorMovement(InputLibrary.Cursor cursor) { float xToMoveBy = cursor.XChange / Renderer.Self.Camera.Zoom; float yToMoveBy = cursor.YChange / Renderer.Self.Camera.Zoom; var didMove = EditingManager.Self.MoveSelectedObjectsBy(xToMoveBy, yToMoveBy); bool isShiftDown = InputLibrary.Keyboard.Self.KeyDown(Microsoft.Xna.Framework.Input.Keys.LeftShift) || InputLibrary.Keyboard.Self.KeyDown(Microsoft.Xna.Framework.Input.Keys.RightShift); if (SelectedState.Self.SelectedInstances.Count() == 0 && (SelectedState.Self.SelectedComponent != null || SelectedState.Self.SelectedStandardElement != null)) { if (isShiftDown) { var xOrY = grabbedInitialState.AxisMovedFurthestAlong; if (xOrY == XOrY.X) { var gue = WireframeObjectManager.Self.GetRepresentation(SelectedState.Self.SelectedElement); gue.Y = grabbedInitialState.ComponentPosition.Y; } else { var gue = WireframeObjectManager.Self.GetRepresentation(SelectedState.Self.SelectedElement); gue.X = grabbedInitialState.ComponentPosition.X; } } } else { if (isShiftDown) { var selectedInstances = SelectedState.Self.SelectedInstances; foreach (InstanceSave instance in selectedInstances) { var xOrY = grabbedInitialState.AxisMovedFurthestAlong; if (xOrY == XOrY.X) { var gue = WireframeObjectManager.Self.GetRepresentation(instance); gue.Y = grabbedInitialState.InstancePositions[instance].Y; } else { var gue = WireframeObjectManager.Self.GetRepresentation(instance); gue.X = grabbedInitialState.InstancePositions[instance].X; } } } } if (didMove) { mHasChangedAnythingSinceLastPush = true; } }