public void OnMouseDown(PointF screenLocation) { switch (CreateObjectState) { case CreateObjectState.None: break; case CreateObjectState.CreateRectangle: _mouseMoving.Active = true; _mouseMoving.FirstCorner = GetPointByUnit(_convertWorldView.GetWorldPointF(screenLocation)); _mouseMoving.SecondCorner = _mouseMoving.FirstCorner; _mouseMoving.SizingValue = PointSizeValueHelper.FromHV(1, 1); CreateRectangleObject(); break; case CreateObjectState.CreateObjectFocused: GameObject gameObject = new GameObject(); gameObject.ObjectCategory = @interface.FocusedObjectCategory; gameObject.Location = @interface.FocusedObjectCategoryLocation.ToPoint(); gameObject.Size = @interface.FocusedObjectCategory.ObjectCategoryImage.Size; gameObject.HasImage = true; gameObject.Resizeable = true; gameObject.Movable = true; gameObject.ObjectImage = @interface.FocusedObjectCategory.ObjectCategoryImage; @interface.AddGameObject(gameObject); break; } }
public void OnMouseMove(PointF screenLocation) { if ([email protected]) { return; } if (_mouseManager.Active) { PointF oldFirstCorner = _mouseManager.FirstCorner; _mouseManager.FirstCorner = _mouseManager.SecondCorner; _mouseManager.SecondCorner = _convertWorldView.GetWorldPoint(screenLocation); switch (_modifiledObjectState) { case ModifiledObjectState.None: break; case ModifiledObjectState.Moving: if (@interface.CurrentObject != null) { @interface.CurrentObject.Move(_mouseManager.Delta); @interface.RefreshCanvas(); } break; case ModifiledObjectState.Sizing: if (@interface.CurrentObject != null) { @interface.CurrentObject.SetSizing(_prepareSizingValue, _mouseManager.FirstCorner.ToPoint(), _mouseManager.SecondCorner.ToPoint()); @interface.RefreshCanvas(); } @interface.RefreshCanvas(); break; case ModifiledObjectState.Selecting: _mouseManager.FirstCorner = oldFirstCorner; var r = @interface.SelectingRect = _mouseManager.BoudingRect; if (@interface.CurrentObject == null) { @interface.CurrentObject = new GroupSelectable(); @interface.AddLayerObject(@interface.CurrentObject); } try { if ([email protected]) { @interface.CurrentObject.Objects.RemoveAll(obj => ((GameObject)obj).Active == false || (!obj.BoudingRect.IntersectsWith(r)) ); } foreach (GameObject obj in @interface.Objects.Objects) { if (!obj.Active) { continue; } if ([email protected](obj) && obj.BoudingRect.IntersectsWith(r)) { @interface.CurrentObject.Objects.Add(obj); } } } catch { } @interface.RefreshCanvas(); break; } _mouseManager.FirstCorner = oldFirstCorner; } else { _prepareObject = null; var ptWorld = _convertWorldView.GetWorldPoint(screenLocation); var objCanSelectByPoint = @interface.Objects.ObjectCanSelectByPoint(ptWorld); if (objCanSelectByPoint != null) { @interface.SelectCursor = Cursors.SizeAll; _modifiledObjectState = ModifiledObjectState.Moving; if (@interface.CurrentObject == null) { _prepareObject = objCanSelectByPoint; } else { if (@interface.CurrentObject.ContainsObject(objCanSelectByPoint)) { _prepareSizingValue = @interface.CurrentObject.SizingPointValue(ptWorld); if (_prepareSizingValue != -1) { _modifiledObjectState = ModifiledObjectState.Sizing; @interface.SelectCursor = PointSizeValueHelper.GetCursor(_prepareSizingValue); } } else { _prepareObject = objCanSelectByPoint; } } } else { _modifiledObjectState = ModifiledObjectState.None; } } }