com.alicizax.unity.editor.e.../Editor/Toolbar/RecommendedStyles/Vector2FieldRecommendedStyle.cs
2025-08-01 19:32:29 +08:00

59 lines
1.8 KiB
C#

using System.Linq;
using UnityEngine.UIElements;
namespace Paps.UnityToolbarExtenderUIToolkit
{
internal class Vector2FieldRecommendedStyle : RecommendedStyle
{
private const int SINGLE_FIELD_MIN_WIDTH = 80;
private readonly Vector2Field _vector2Field;
public Vector2FieldRecommendedStyle(Vector2Field vector2Field)
{
_vector2Field = vector2Field;
}
protected override void ApplyRootElementStyle()
{
_vector2Field.labelElement.style.minWidth = Length.Auto();
var inputFieldsParentElement = GetInputFieldsParentElement();
foreach (var child in inputFieldsParentElement.Children().Where(childElement => childElement is FloatField))
{
var inputFieldElementIndex = 1;
var inputFieldElement = child[inputFieldElementIndex];
inputFieldElement.style.overflow = Overflow.Visible;
inputFieldElement.style.minWidth = SINGLE_FIELD_MIN_WIDTH;
}
var spacerElement = inputFieldsParentElement.Children().Last();
spacerElement.style.flexGrow = 0;
}
protected override void ApplyInsideGroupStyle()
{
var inputFieldsParentElement = GetInputFieldsParentElement();
inputFieldsParentElement.style.flexWrap = Wrap.Wrap;
var spacerElement = inputFieldsParentElement.Children().Last();
spacerElement.style.flexGrow = 0;
}
private VisualElement GetInputFieldsParentElement()
{
var inputFieldsParentIndex = 1;
if (string.IsNullOrEmpty(_vector2Field.label))
inputFieldsParentIndex = 0;
return _vector2Field[inputFieldsParentIndex];
}
}
}