Example #1
0
        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;
                }
            }
        }