diff --git a/Source/Engine/UI/GUI/Control.Bounds.cs b/Source/Engine/UI/GUI/Control.Bounds.cs index 9d0dafeb7..c94bdf80c 100644 --- a/Source/Engine/UI/GUI/Control.Bounds.cs +++ b/Source/Engine/UI/GUI/Control.Bounds.cs @@ -169,6 +169,12 @@ namespace FlaxEngine.GUI set => Bounds = new Rectangle(value + (_parent != null ? _parent.Bounds.Size * (_anchorMax + _anchorMin) * 0.5f : Float2.Zero) - _bounds.Size * _pivot, _bounds.Size); } + /// + /// Whether to resize the UI Control based on where the pivot is rather than just the top-left. + /// + [ExpandGroups, EditorDisplay("Transform"), EditorOrder(1060)] + public bool PivotRelative = false; + /// /// Gets or sets width of the control. /// @@ -180,7 +186,13 @@ namespace FlaxEngine.GUI { if (Mathf.NearEqual(_bounds.Size.X, value)) return; - var bounds = new Rectangle(_bounds.Location, value, _bounds.Size.Y); + var rectLocation = _bounds.Location; + if (PivotRelative) + { + var delta = _bounds.Size.X - value; + rectLocation.X += delta * Pivot.X; + } + var bounds = new Rectangle(rectLocation, value, _bounds.Size.Y); SetBounds(ref bounds); } } @@ -196,7 +208,13 @@ namespace FlaxEngine.GUI { if (Mathf.NearEqual(_bounds.Size.Y, value)) return; - var bounds = new Rectangle(_bounds.Location, _bounds.Size.X, value); + var rectLocation = _bounds.Location; + if (PivotRelative) + { + var delta = _bounds.Size.Y - value; + rectLocation.Y += delta * Pivot.Y; + } + var bounds = new Rectangle(rectLocation, _bounds.Size.X, value); SetBounds(ref bounds); } }