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();
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }