From abffa4db5733c613abf03a5656a6608c0713e3b9 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Mon, 20 Jul 2020 00:28:31 +0200 Subject: [PATCH] fixed an element transform issue and added a fancy button to the ui demo --- Demos/UiDemo.cs | 16 ++++++++++++++++ MLEM.Ui/Elements/Element.cs | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Demos/UiDemo.cs b/Demos/UiDemo.cs index 5d8f241..a2291f7 100644 --- a/Demos/UiDemo.cs +++ b/Demos/UiDemo.cs @@ -142,6 +142,22 @@ namespace Demos { OnPressed = element => CoroutineHandler.Start(WobbleButton(element)), PositionOffset = new Vector2(0, 1) }); + // Another button that shows animations! + var fancyHoverTimer = 0D; + var fancyButton = this.root.AddChild(new Button(Anchor.AutoCenter, new Vector2(0.5F, 10), "Fancy Hover") { + PositionOffset = new Vector2(0, 1), + OnUpdated = (e, time) => { + if (e.IsMouseOver && fancyHoverTimer <= 0.5F) + return; + if (fancyHoverTimer > 0) { + fancyHoverTimer -= time.ElapsedGameTime.TotalSeconds * 3; + e.ScaleTransform(1 + (float) Math.Sin(fancyHoverTimer * MathHelper.Pi) * 0.05F); + } else { + e.Transform = Matrix.Identity; + } + } + }); + fancyButton.OnMouseEnter += e => fancyHoverTimer = 1; this.root.AddChild(new Button(Anchor.AutoCenter, new Vector2(0.5F, 10), "Transform Ui", "This button causes the entire ui to be transformed (both in positioning, rotation and scale)") { OnPressed = element => { if (element.Root.Transform == Matrix.Identity) { diff --git a/MLEM.Ui/Elements/Element.cs b/MLEM.Ui/Elements/Element.cs index 64602a7..dd6f991 100644 --- a/MLEM.Ui/Elements/Element.cs +++ b/MLEM.Ui/Elements/Element.cs @@ -834,7 +834,7 @@ namespace MLEM.Ui.Elements { public void DrawTransformed(GameTime time, SpriteBatch batch, float alpha, BlendState blendState, SamplerState samplerState, Matrix matrix) { var transform = this.Transform ?? this.TransformGetter(this, time, matrix); var customDraw = this.BeginImpl != null || transform != Matrix.Identity; - var mat = matrix * transform; + var mat = transform * matrix; if (customDraw) { // end the usual draw so that we can begin our own batch.End();