private void ExecuteRotateMeshCommand(Mesh mesh) { BusyIndicatorService.Run(dispatcher => { var message = new RotateFactorMessage(); if (mesh.Descriptor != null) { var center = mesh.Descriptor.Center; message.CenterX = center.X; message.CenterY = center.Y; } Messenger.Instance.Notify(message); if (!message.Changed) { return; } BusyIndicatorService.Notify("Rotating ..."); mesh.RotateXY(message.Angle, message.CenterX, message.CenterY); dispatcher(() => this.UpdateModel()); dispatcher(() => this.CurrentMeshes.SetSelection(mesh)); dispatcher(() => this.OptModel.UndoStackPush("rotate mesh")); }); }
private void OnRotateFactorMessage(RotateFactorMessage message) { Action action = () => { var dialog = new RotateFactorDialog(this); dialog.CenterX = message.CenterX; dialog.CenterY = message.CenterY; dialog.Angle = message.Angle; if (dialog.ShowDialog() == true) { message.CenterX = dialog.CenterX; message.CenterY = dialog.CenterY; message.Angle = dialog.Angle; message.Changed = true; } else { message.Changed = false; } }; this.Dispatcher.Invoke(action); }