Exemplo n.º 1
0
        protected override async Task Invoke(MapDocument document, CommandParameters parameters)
        {
            var selBox = document.Selection.GetSelectionBoundingBox();

            var tl = document.Map.Data.GetOne <TransformationFlags>() ?? new TransformationFlags();

            var transaction = new Transaction();

            var tform = Matrix4x4.CreateTranslation(-selBox.Center)
                        * Matrix4x4.CreateScale(GetScale())
                        * Matrix4x4.CreateTranslation(selBox.Center);

            var transformOperation = new BspEditor.Modification.Operations.Mutation.Transform(tform, document.Selection.GetSelectedParents());

            transaction.Add(transformOperation);

            transaction.Add(new FlipFaces(document.Selection));

            // Check for texture transform
            if (tl.TextureLock)
            {
                transaction.Add(new TransformTexturesUniform(tform, document.Selection));
            }

            await MapDocumentOperation.Perform(document, transaction);
        }
Exemplo n.º 2
0
        protected override async Task Invoke(MapDocument document, CommandParameters parameters)
        {
            var selBox = document.Selection.GetSelectionBoundingBox();

            var tl = document.Map.Data.GetOne <TransformationFlags>() ?? new TransformationFlags();

            var transaction = new Transaction();

            foreach (var mo in document.Selection.GetSelectedParents().ToList())
            {
                var objBox      = mo.BoundingBox;
                var translation = GetTranslation(selBox, objBox);
                if (translation == Vector3.Zero)
                {
                    continue;
                }

                var tform = Matrix4x4.CreateTranslation(translation);

                var transformOperation = new BspEditor.Modification.Operations.Mutation.Transform(tform, mo);
                transaction.Add(transformOperation);

                // Check for texture transform
                if (tl.TextureLock)
                {
                    transaction.Add(new TransformTexturesUniform(tform, mo.FindAll()));
                }
            }

            if (!transaction.IsEmpty)
            {
                await MapDocumentOperation.Perform(document, transaction);
            }
        }
Exemplo n.º 3
0
        protected override async Task Invoke(MapDocument document, CommandParameters parameters)
        {
            var selBox = document.Selection.GetSelectionBoundingBox();

            var axis    = parameters.Get <Vector3>("Axis");
            var amount  = parameters.Get <float>("Angle");
            var radians = (float)MathHelper.DegreesToRadians(amount);

            var tl = document.Map.Data.GetOne <TransformationFlags>() ?? new TransformationFlags();

            var transaction = new Transaction();

            var tform = Matrix4x4.CreateTranslation(-selBox.Center)
                        * Matrix4x4.CreateFromAxisAngle(axis, radians)
                        * Matrix4x4.CreateTranslation(selBox.Center);

            var transformOperation = new BspEditor.Modification.Operations.Mutation.Transform(tform, document.Selection.GetSelectedParents());

            transaction.Add(transformOperation);

            // Check for texture transform
            if (tl.TextureLock)
            {
                transaction.Add(new TransformTexturesUniform(tform, document.Selection));
            }

            await MapDocumentOperation.Perform(document, transaction);
        }
Exemplo n.º 4
0
        protected override async Task Invoke(MapDocument document, CommandParameters parameters)
        {
            var objects = document.Selection.GetSelectedParents().ToList();
            var box     = document.Selection.GetSelectionBoundingBox();

            using (var dialog = new TransformDialog(box))
            {
                _translator.Value.Translate(dialog);
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        var transaction = new Transaction();

                        // Add the operation
                        var transform          = dialog.GetTransformation(box);
                        var transformOperation = new BspEditor.Modification.Operations.Mutation.Transform(transform, objects);
                        transaction.Add(transformOperation);

                        // Check for texture transform
                        var tl = document.Map.Data.GetOne <TransformationFlags>() ?? new TransformationFlags();
                        if (dialog.Type == TransformDialog.TransformType.Rotate || dialog.Type == TransformDialog.TransformType.Translate)
                        {
                            if (tl.TextureLock)
                            {
                                transaction.Add(new TransformTexturesUniform(transform, objects.SelectMany(x => x.FindAll())));
                            }
                        }
                        else if (dialog.Type == TransformDialog.TransformType.Scale)
                        {
                            if (tl.TextureScaleLock)
                            {
                                transaction.Add(new TransformTexturesScale(transform, objects.SelectMany(x => x.FindAll())));
                            }
                        }

                        await MapDocumentOperation.Perform(document, transaction);
                    }
                    catch (TransformDialog.CannotScaleByZeroException)
                    {
                        MessageBox.Show(ErrorCannotScaleByZeroMessage, ErrorCannotScaleByZeroTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
Exemplo n.º 5
0
        protected override async Task Invoke(MapDocument document, CommandParameters parameters)
        {
            var grid = document.Map.Data.GetOne <GridData>();

            if (grid == null)
            {
                return;
            }

            var tl = document.Map.Data.GetOne <TransformationFlags>() ?? new TransformationFlags();

            var transaction = new Transaction();

            foreach (var mo in document.Selection.GetSelectedParents().ToList())
            {
                var box = mo.BoundingBox;

                var start   = box.Start;
                var snapped = grid.Grid.Snap(start);
                var trans   = snapped - start;
                if (trans == Vector3.Zero)
                {
                    continue;
                }

                var tform = Matrix4x4.CreateTranslation(trans);

                var transformOperation = new BspEditor.Modification.Operations.Mutation.Transform(tform, mo);
                transaction.Add(transformOperation);

                // Check for texture transform
                if (tl.TextureLock)
                {
                    transaction.Add(new TransformTexturesUniform(tform, mo.FindAll()));
                }
            }

            if (!transaction.IsEmpty)
            {
                await MapDocumentOperation.Perform(document, transaction);
            }
        }
Exemplo n.º 6
0
        protected override async Task Invoke(MapDocument document, CommandParameters parameters)
        {
            var selBox = document.Selection.GetSelectionBoundingBox();
            var grid   = document.Map.Data.GetOne <GridData>();

            if (grid == null)
            {
                return;
            }

            var start   = selBox.Start;
            var snapped = grid.Grid.Snap(start);
            var trans   = snapped - start;

            if (trans == Vector3.Zero)
            {
                return;
            }

            var tform = Matrix4x4.CreateTranslation(trans);

            var transaction        = new Transaction();
            var transformOperation = new BspEditor.Modification.Operations.Mutation.Transform(tform, document.Selection.GetSelectedParents());

            transaction.Add(transformOperation);

            // Check for texture transform
            var tl = document.Map.Data.GetOne <TransformationFlags>() ?? new TransformationFlags();

            if (tl.TextureLock)
            {
                transaction.Add(new TransformTexturesUniform(tform, document.Selection));
            }

            await MapDocumentOperation.Perform(document, transaction);
        }