Exemple #1
0
        void handleInputWhenAddingAnEntity( )
        {
            //mef: this might need to go back to the main Update method
            if (Constants.Instance.SnapToGrid || KeyboardStatus.IsKeyDown(Keys.G))
            {
                MouseStatus.WorldPosition = SnapToGrid(MouseStatus.WorldPosition);
            }

            if (MouseStatus.IsNewRightMouseButtonClick( ) || KeyboardStatus.IsNewKeyPress(Keys.D3))
            {
                //mef: delegate to current primitive plugin
                if (_entityCreation.StartedCreating)
                {
                    _entityCreation.StartedCreating = false;
                    _entityCreation.ClearCurrentEditor( );

                    //mef: implement
                    //switch (_currentPrimitiveName)
                    //{
                    //    case PrimitiveType.Rectangle:
                    //        //_mainForm.SetToolStripStatusLabel1(Resources.Rectangle_Entered);
                    //        break;
                    //    case PrimitiveType.Circle:
                    //        //_mainForm.SetToolStripStatusLabel1(Resources.Circle_Entered);
                    //        break;
                    //    case PrimitiveType.Path:
                    //        //_mainForm.SetToolStripStatusLabel1(Resources.Path_Entered);
                    //        break;
                    //}
                }
                else
                {
                    destroyPrimitiveBrush( );
                    _entityCreation.StartedCreating = false;
                }
            }

            if (_entityCreation.StartedCreating)
            {
                _entityCreation.CurrentEditor.UserInteractionDuringCreation( );

                return;
            }

            if (MouseStatus.IsNewLeftMouseButtonClick( ) || KeyboardStatus.IsNewKeyPress(Keys.D3))
            {
                if (_entityCreation.StartedCreating == false)
                {
                    _entityCreation.StartedCreating = true;
                    _entityCreation.CurrentEditor   = buildPrimitiveEditorReadyForDesigning(_entityCreation.CreationProperties);
                }
            }
        }
Exemple #2
0
        public void Update( )
        {
            IEnumerable <ItemEditor> allSelectedEditors = selectedEditors( ).ToList(  );

            Vector2 newDistance = MouseStatus.WorldPosition - allSelectedEditors.First().ItemProperties.Position;

            float factor = newDistance.Length( ) / _canvas.GrabPoint.Length( );

            int i = 0;

            allSelectedEditors.Where(si => si.CanScale).ForEach(
                thingToScale =>
            {
                //todo: reimplement texture
                //if (selitem is TextureItem)
                //{
                //    _mainForm.SetToolStripStatusLabel1("Hold down [X] or [Y] to limit scaling to the according dimension.");
                //}

                Vector2 newscale = _canvas.ScalesBeforeUserInteraction[i];
                if (!KeyboardStatus.IsKeyDown(Keys.Y))
                {
                    newscale.X = _canvas.ScalesBeforeUserInteraction[i].X * (((factor - 1.0f) * 0.5f) + 1.0f);
                }

                if (!KeyboardStatus.IsKeyDown(Keys.X))
                {
                    newscale.Y = _canvas.ScalesBeforeUserInteraction[i].Y * (((factor - 1.0f) * 0.5f) + 1.0f);
                }

                thingToScale.Scale = newscale;

                if (KeyboardStatus.IsKeyDown(Keys.LeftControl))
                {
                    Vector2 scale;
                    scale.X            = (float)Math.Round(thingToScale.Scale.X * 10) / 10;
                    scale.Y            = (float)Math.Round(thingToScale.Scale.Y * 10) / 10;
                    thingToScale.Scale = scale;
                }
                i++;
            });

            IoC.Model.NotifyChanged(allSelectedEditors);

            if (MouseStatus.IsNewRightMouseButtonRelease( ) || KeyboardStatus.IsNewKeyRelease(Keys.D3))
            {
                _canvas.SetModeToIdle(  );

                ObjectFactory.GetInstance <IMemento>().EndCommand( );
            }

            return;
        }
        public void Update( )
        {
            int i = 0;

            IEnumerable <ItemEditor> allSelectedEditors = selectedEditors( ).ToList(  );

            foreach (ItemEditor eachSelectedEditor in allSelectedEditors)
            {
                _newPosition = _canvas.PositionsBeforeUserInteraction[i] + MouseStatus.WorldPosition - _canvas.GrabPoint;

                if (Constants.Instance.SnapToGrid || KeyboardStatus.IsKeyDown(Keys.G))
                {
                    _newPosition = _canvas.SnapToGrid(_newPosition);
                }

                //_editor.SnapPoint.Visible = false ;

                eachSelectedEditor.SetPosition(_newPosition);

                i++;
            }

            IoC.Model.NotifyChanged(allSelectedEditors);

            if (MouseStatus.IsNewLeftMouseButtonReleased( ) || KeyboardStatus.IsNewKeyRelease(Keys.D1))
            {
                foreach (ItemEditor eachSelectedEditor in allSelectedEditors)
                {
                    eachSelectedEditor.OnMouseButtonUp(MouseStatus.WorldPosition);
                }

                bool isMoving = _canvas.CurrentUserAction == UserActionInEditor.MovingItems;
                _canvas.SetModeToIdle( );

                var samePoint = MouseStatus.WorldPosition == _canvas.GrabPoint;

                var memento = ObjectFactory.GetInstance <IMemento>();

                if (samePoint && isMoving)
                {
                    memento.AbortCommand( );
                }
                else
                {
                    memento.EndCommand( );
                }
            }
        }
        public override void UserInteractionDuringCreation( )
        {
            _properties.Width  = MouseStatus.WorldPosition.X - _properties.Position.X;
            _properties.Height = MouseStatus.WorldPosition.Y - _properties.Position.Y;

            if (KeyboardStatus.IsKeyDown(Keys.LeftControl))
            {
                _properties.Width = _properties.Height;
            }

            if (MouseStatus.IsNewLeftMouseButtonClick(  ))
            {
                PreviewEndedReadyForCreation(this, EventArgs.Empty);
            }

            WhenUpdatedByUi(  );
        }
Exemple #5
0
        public void SetMousePosition(int screenx, int screeny)
        {
            Vector2 maincameraposition = Camera.Position;

            if (getLevel( ).ActiveLayer != null)
            {
                Camera.Position *= getLevel( ).ActiveLayer.ScrollSpeed;
            }

            MouseStatus.WorldPosition = Vector2.Transform(new Vector2(screenx, screeny), Matrix.Invert(Camera.Matrix));

            if (Constants.Instance.SnapToGrid || KeyboardStatus.IsKeyDown(Keys.G))
            {
                MouseStatus.WorldPosition = SnapToGrid(MouseStatus.WorldPosition);
            }

            Camera.Position = maincameraposition;
        }
Exemple #6
0
        public void Update( )
        {
            IEnumerable <ItemEditor> allSelectedEditors = selectedEditors( ).ToList(  );

            Vector2 newpos = MouseStatus.WorldPosition - allSelectedEditors.First().ItemProperties.Position;

            float deltaTheta = (float)Math.Atan2(_canvas.GrabPoint.Y, _canvas.GrabPoint.X) - (float)Math.Atan2(newpos.Y, newpos.X);

            int i = 0;

            foreach (ItemEditor eachSelectedItem in allSelectedEditors)
            {
                if (eachSelectedItem.CanRotate( ))
                {
                    eachSelectedItem.Rotation = _canvas.RotationsBeforeUserInteraction[i] - deltaTheta;

                    if (KeyboardStatus.IsKeyDown(Keys.LeftControl))
                    {
                        eachSelectedItem.Rotation = (float)Math.Round(eachSelectedItem.Rotation / MathHelper.PiOver4)
                                                    * MathHelper.PiOver4;
                    }

                    i++;
                }

                IoC.Model.NotifyChanged(allSelectedEditors);
            }


            if (MouseStatus.IsNewMiddleMouseButtonRelease( ) || KeyboardStatus.IsNewKeyRelease(Keys.D2))
            {
                _canvas.SetModeToIdle(  );

                ObjectFactory.GetInstance <IMemento>().EndCommand( );
            }

            return;
        }
Exemple #7
0
        public void Update( )
        {
            //get item under mouse cursor

            var model = ObjectFactory.GetInstance <IModel>( );

            ItemEditor item = _canvas.ItemUnderMouse;

            bool controlButtonPressed = KeyboardStatus.IsKeyDown(Keys.LeftControl);

            if (item != null)
            {
                _mainForm.SetToolStripStatusLabel1(item.ItemProperties.Name);

                item.OnMouseOver(MouseStatus.WorldPosition);

                if (controlButtonPressed)
                {
                    _mainForm.SetCursorForCanvas(_cursorDuplicate);
                }
            }
            else
            {
                _mainForm.SetToolStripStatusLabel1(string.Empty);
            }

            if (item != _lastItem && _lastItem != null)
            {
                _lastItem.OnMouseOut( );
            }

            _lastItem = item;

            IEnumerable <ITreeItem> editors = selectedEditors( ).ToList(  );

            if (MouseStatus.IsNewLeftMouseButtonClick() || KeyboardStatus.IsNewKeyPress(Keys.D1))
            {
                if (item != null)
                {
                    item.OnMouseButtonDown(MouseStatus.WorldPosition);
                }

                if (controlButtonPressed && item != null)
                {
                    _canvas.StartCopyingSelectedItems( );
                }
                else if (KeyboardStatus.IsKeyDown(Keys.LeftShift) && item != null)
                {
                    model.ToggleSelectionOnItem(item);
                }
                else if (editors.Contains(item))
                {
                    _canvas.StartMovingSelectedItems( );
                }
                else if (!selectedEditors().Contains(item))
                {
                    if (item != null)
                    {
                        _model.SelectEditor(item);
                        _canvas.StartMovingSelectedItems(  );
                    }
                    else
                    {
                        _canvas.CreateSelectionRectangle( );
                    }
                }
            }

            //MIDDLE MOUSE BUTTON CLICK
            bool anyEditorsSelected = editors.Any();

            if (MouseStatus.IsNewMiddleMouseButtonClick( ) || KeyboardStatus.IsNewKeyPress(Keys.D2))
            {
                if (item != null)
                {
                    item.OnMouseOut( );
                }

                if (controlButtonPressed)
                {
                    _canvas.StartMovingCamera( );
                }
                else
                {
                    if (anyEditorsSelected)
                    {
                        _canvas.StartRotatingItems( );
                    }
                }
            }

            //RIGHT MOUSE BUTTON CLICK
            if (MouseStatus.IsNewRightMouseButtonClick( ) || KeyboardStatus.IsNewKeyPress(Keys.D3))
            {
                if (item != null)
                {
                    item.OnMouseOut( );
                }

                if (anyEditorsSelected)
                {
                    _canvas.StartScalingSelectedItems( );
                }
            }

            selectedEditors(  ).ForEach(e => e.HandleKeyPressWhenFocused());
        }
Exemple #8
0
        void handleCameraControls(GameTime gameTime)
        {
            int scrollWheelDelta = MouseStatus.ScrollwheelDelta;

            if (scrollWheelDelta > 0 /* && kstate.IsKeyDown(Keys.LeftControl)*/)
            {
                float zoom = (float)Math.Round(Camera.Scale * 10) * 10.0f + 10.0f;

                _mainForm.SetZoomComboText(zoom.ToString( ) + "%");

                Camera.Scale = zoom / 100.0f;
            }

            if (scrollWheelDelta < 0 /* && kstate.IsKeyDown(Keys.LeftControl)*/)
            {
                float zoom = (float)Math.Round(Camera.Scale * 10) * 10.0f - 10.0f;
                if (zoom <= 0.0f)
                {
                    return;
                }

                _mainForm.SetZoomComboText(zoom.ToString( ) + "%");

                Camera.Scale = zoom / 100.0f;
            }

            //Camera movement
            float delta;

            if (KeyboardStatus.IsKeyDown(Keys.LeftShift))
            {
                delta = Constants.Instance.CameraFastSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
            }
            else
            {
                delta = Constants.Instance.CameraSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;
            }

            bool leftControlKeyNotPressed = KeyboardStatus.IsKeyUp(Keys.LeftControl);

            if (KeyboardStatus.IsKeyDown(Keys.W) && leftControlKeyNotPressed)
            {
                Camera.Position += (new Vector2(0, -delta));
            }

            if (KeyboardStatus.IsKeyDown(Keys.S) && leftControlKeyNotPressed)
            {
                Camera.Position += (new Vector2(0, +delta));
            }

            if (KeyboardStatus.IsKeyDown(Keys.A) && leftControlKeyNotPressed)
            {
                Camera.Position += (new Vector2(-delta, 0));
            }

            if (KeyboardStatus.IsKeyDown(Keys.D) && leftControlKeyNotPressed)
            {
                Camera.Position += (new Vector2(+delta, 0));
            }

            if (KeyboardStatus.IsKeyDown(Keys.Subtract))
            {
                var zoom = (float)(Camera.Scale * 0.995);

                _mainForm.SetZoomComboText(textualRepresentationOfZoom(zoom));

                Camera.Scale = zoom;
            }

            if (KeyboardStatus.IsKeyDown(Keys.Add))
            {
                var zoom = (float)(Camera.Scale * 1.005);
                _mainForm.SetZoomComboText(textualRepresentationOfZoom(zoom));
                Camera.Scale = zoom;
            }

            //get mouse world position considering the ScrollSpeed of the current layer
            Vector2 maincameraposition = Camera.Position;

            if (getLevel( ).ActiveLayer != null)
            {
                Camera.Position *= getLevel( ).ActiveLayer.ScrollSpeed;
            }

            MouseStatus.UpdateCamera(Camera);

            MouseStatus.WorldPosition = Vector2.Transform(MouseStatus.ScreenPosition, Matrix.Invert(Camera.Matrix));
            MouseStatus.WorldPosition = MouseStatus.WorldPosition.Round( );

            _mainForm.SetToolStripStatusLabel3(
                "Mouse: ({0}, {1})".FormatWith(MouseStatus.WorldPosition.X, MouseStatus.WorldPosition.Y));

            Camera.Position = maincameraposition;
        }