Exemplo n.º 1
0
        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"));
            });
        }
Exemplo n.º 2
0
        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);
        }