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