diff --git a/Source/Editor/CustomEditors/Dedicated/UIControlEditor.cs b/Source/Editor/CustomEditors/Dedicated/UIControlEditor.cs
index 1c0ce7421..8e67d0a57 100644
--- a/Source/Editor/CustomEditors/Dedicated/UIControlEditor.cs
+++ b/Source/Editor/CustomEditors/Dedicated/UIControlEditor.cs
@@ -32,7 +32,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
if (_presets != value)
{
_presets = value;
- OnPresetsChanged();
+ TooltipText = CustomEditorsUtil.GetPropertyNameUI(_presets.ToString());
}
}
}
@@ -463,9 +463,9 @@ namespace FlaxEditor.CustomEditors.Dedicated
private void BuildLocationSizeOffsets(LayoutElementsContainer horUp, LayoutElementsContainer horDown, bool xEq, bool yEq, ScriptType[] valueTypes)
{
- ScriptMemberInfo xInfo = valueTypes[0].GetProperty("X");
+ ScriptMemberInfo xInfo = valueTypes[0].GetProperty("LocalX");
ItemInfo xItem = new ItemInfo(xInfo);
- ScriptMemberInfo yInfo = valueTypes[0].GetProperty("Y");
+ ScriptMemberInfo yInfo = valueTypes[0].GetProperty("LocalY");
ItemInfo yItem = new ItemInfo(yInfo);
ScriptMemberInfo widthInfo = valueTypes[0].GetProperty("Width");
ItemInfo widthItem = new ItemInfo(widthInfo);
diff --git a/Source/Engine/UI/GUI/Control.Bounds.cs b/Source/Engine/UI/GUI/Control.Bounds.cs
index 658115f43..d7fbad5fc 100644
--- a/Source/Engine/UI/GUI/Control.Bounds.cs
+++ b/Source/Engine/UI/GUI/Control.Bounds.cs
@@ -26,11 +26,30 @@ namespace FlaxEngine.GUI
set => Bounds = new Rectangle(X, value, _bounds.Size);
}
+ ///
+ /// Gets or sets the local X coordinate of the pivot of the control relative to the anchor in parent of its container.
+ ///
+ [HideInEditor, NoSerialize]
+ public float LocalX
+ {
+ get => LocalLocation.X;
+ set => LocalLocation = new Vector2(value, LocalLocation.Y);
+ }
+
+ ///
+ /// Gets or sets the local Y coordinate of the pivot of the control relative to the anchor in parent of its container.
+ ///
+ [HideInEditor, NoSerialize]
+ public float LocalY
+ {
+ get => LocalLocation.Y;
+ set => LocalLocation = new Vector2(LocalLocation.X, value);
+ }
+
///
/// Gets or sets the normalized position in the parent control that the upper left corner is anchored to (range 0-1).
///
- [Serialize]
- [HideInEditor, ExpandGroups, Limit(0.0f, 1.0f, 0.01f), EditorDisplay("Transform"), EditorOrder(990), Tooltip("The normalized position in the parent control that the upper left corner is anchored to (range 0-1).")]
+ [Serialize, HideInEditor]
public Vector2 AnchorMin
{
get => _anchorMin;
@@ -49,8 +68,7 @@ namespace FlaxEngine.GUI
///
/// Gets or sets the normalized position in the parent control that the bottom right corner is anchored to (range 0-1).
///
- [Serialize]
- [HideInEditor, ExpandGroups, Limit(0.0f, 1.0f, 0.01f), EditorDisplay("Transform"), EditorOrder(991), Tooltip("The normalized position in the parent control that the bottom right corner is anchored to (range 0-1).")]
+ [Serialize, HideInEditor]
public Vector2 AnchorMax
{
get => _anchorMax;
@@ -69,8 +87,7 @@ namespace FlaxEngine.GUI
///
/// Gets or sets the offsets of the corners of the control relative to its anchors.
///
- [Serialize]
- [HideInEditor, ExpandGroups, EditorDisplay("Transform"), EditorOrder(992), Tooltip("The offsets of the corners of the control relative to its anchors.")]
+ [Serialize, HideInEditor]
public Margin Offsets
{
get => _offsets;
@@ -91,8 +108,8 @@ namespace FlaxEngine.GUI
[NoSerialize, HideInEditor]
internal float Proxy_Offset_Left
{
- get => Offsets.Left;
- set => Offsets = new Margin(value, Offsets.Right, Offsets.Top, Offsets.Bottom);
+ get => _offsets.Left;
+ set => Offsets = new Margin(value, _offsets.Right, _offsets.Top, _offsets.Bottom);
}
///
@@ -101,8 +118,8 @@ namespace FlaxEngine.GUI
[NoSerialize, HideInEditor]
internal float Proxy_Offset_Right
{
- get => Offsets.Right;
- set => Offsets = new Margin(Offsets.Left, value, Offsets.Top, Offsets.Bottom);
+ get => _offsets.Right;
+ set => Offsets = new Margin(_offsets.Left, value, _offsets.Top, _offsets.Bottom);
}
///
@@ -111,8 +128,8 @@ namespace FlaxEngine.GUI
[NoSerialize, HideInEditor]
internal float Proxy_Offset_Top
{
- get => Offsets.Top;
- set => Offsets = new Margin(Offsets.Left, Offsets.Right, value, Offsets.Bottom);
+ get => _offsets.Top;
+ set => Offsets = new Margin(_offsets.Left, _offsets.Right, value, _offsets.Bottom);
}
///
@@ -121,22 +138,31 @@ namespace FlaxEngine.GUI
[NoSerialize, HideInEditor]
internal float Proxy_Offset_Bottom
{
- get => Offsets.Bottom;
- set => Offsets = new Margin(Offsets.Left, Offsets.Right, Offsets.Top, value);
+ get => _offsets.Bottom;
+ set => Offsets = new Margin(_offsets.Left, _offsets.Right, _offsets.Top, value);
}
#endif
///
/// Gets or sets coordinates of the upper-left corner of the control relative to the upper-left corner of its container.
///
- [NoSerialize]
- [HideInEditor, ExpandGroups, EditorDisplay("Transform"), EditorOrder(1000), Tooltip("The location of the upper-left corner of the control relative to he upper-left corner of its container.")]
+ [NoSerialize, HideInEditor]
public Vector2 Location
{
get => _bounds.Location;
set => Bounds = new Rectangle(value, _bounds.Size);
}
+ ///
+ /// Gets or sets the local position of the pivot of the control relative to the anchor in parent of its container.
+ ///
+ [NoSerialize, HideInEditor]
+ public Vector2 LocalLocation
+ {
+ get => _bounds.Location - (_parent != null ? _parent._bounds.Size * (_anchorMax + _anchorMin) * 0.5f : Vector2.Zero) + _bounds.Size * _pivot;
+ set => Bounds = new Rectangle(value + (_parent != null ? _parent.Bounds.Size * (_anchorMax + _anchorMin) * 0.5f : Vector2.Zero) - _bounds.Size * _pivot, _bounds.Size);
+ }
+
///
/// Gets or sets width of the control.
///
@@ -160,8 +186,7 @@ namespace FlaxEngine.GUI
///
/// Gets or sets control's size.
///
- [NoSerialize]
- [HideInEditor, EditorDisplay("Transform"), EditorOrder(1010), Tooltip("The size of the control bounds.")]
+ [NoSerialize, HideInEditor]
public Vector2 Size
{
get => _bounds.Size;