private void _RightMouseButtonDown( MouseEventArgs e )
        {
            ActorEd actor = GetActor( e.X, e.Y );

            if( actor != null )
            {
                if( Global.Tools.IsSelectionMode )
                {
                    if( !_selectedActors.Contains( actor ) )
                        SelectActor( actor, false );

                    ShowActorContextMenu( e.Location );
                }
            }

            _moveMode = MouseMoveMode.Camera;
        }
        public void ViewportMouseUp( object sender, MouseEventArgs e )
        {
            if ( _moveMode == MouseMoveMode.Selection )
            {
                if ( _selectionBox.Width < 0 )
                {
                    _selectionBox.X = _selectionBox.Right;
                    _selectionBox.Width *= -1;
                }
                if ( _selectionBox.Height < 0 )
                {
                    _selectionBox.Y = _selectionBox.Bottom;
                    _selectionBox.Height *= -1;
                }

                foreach ( ActorEd actor in Parent.Level.SelectedLayer.Actors )
                {
                    if( _selectionBox.Contains( actor.Position ) )
                        SelectActor( actor, true );
                }

                _selectionBox.Width = 1;
                _selectionBox.Height = 1;
            }
            else if( _moveMode == MouseMoveMode.Create )
            {
                CreateActor( e.X, e.Y );
            }
            else if( _moveMode == MouseMoveMode.Actor && _actorMode == ActorMode.Move && Global.Tools.IsDragSnapToGrid )
            {
                foreach( ActorEd actor in _selectedActors )
                {
                    actor.Position = Helper.DragSnap( actor.Position );
                }
            }

            Global.Properties.RefreshGrid( );

            _moveMode = MouseMoveMode.None;
        }
        private void _LeftMouseButtonDown( MouseEventArgs e )
        {
            ActorEd actor;

            if( !Global.SelectedLevel2.SelectedLayer.Locked )
            {
                if( Global.Tools.IsSelectionMode )
                {
                    actor = GetActor( e.X, e.Y );

                    if( actor != null )
                    {
                        if( Control.ModifierKeys == Keys.Shift )
                        {
                            if( _selectedActors.Contains( actor ) )
                                UnselectActor( actor );
                            else
                                SelectActor( actor, true );
                        }
                        else if( !_selectedActors.Contains( actor ) )
                            SelectActor( actor, false );

                        _moveMode = MouseMoveMode.Actor;

                        _actorMode = GetActorMode( actor, e.X, e.Y );
                        _mouseFirstPos = new Point( e.X, e.Y );
                        _actorInitialScale = actor.Scale;
                        Vector2 mousePos = Helper.ScreenToWorldPosition( Camera, e.X, e.Y );
                        _actorPrevRotation = (float)Math.Atan2( actor.Position.Y - mousePos.Y, actor.Position.X - mousePos.X );
                    }
                    else
                    {
                        UnselectAllActors( );
                        _moveMode = MouseMoveMode.Selection;
                        Vector2 pos = Helper.ScreenToWorldPosition( Camera, e.X, e.Y );
                        _selectionBox.X = (int)pos.X;
                        _selectionBox.Y = (int)pos.Y;
                    }
                }
                else
                {
                    _moveMode = MouseMoveMode.Create;
                }
            }
        }
        public void ViewportMouseDown( object sender, MouseEventArgs e )
        {
            switch ( e.Button )
            {
                case MouseButtons.Left:
                    _LeftMouseButtonDown( e );
                    break;

                case MouseButtons.Right:
                    _RightMouseButtonDown( e );
                    break;

                case MouseButtons.Middle:
                    _moveMode = MouseMoveMode.Zoom;
                    break;
            }

            _mouseLastPos = e.Location;
        }