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