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