mirror of
https://github.com/codewriter-packages/Tri-Inspector.git
synced 2025-01-23 08:48:21 -05:00
61 lines
1.7 KiB
C#
61 lines
1.7 KiB
C#
using TriInspector.Utilities;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace TriInspector.Elements
|
|
{
|
|
public class TriHorizontalGroupElement : TriPropertyCollectionBaseElement
|
|
{
|
|
public override float GetHeight(float width)
|
|
{
|
|
if (ChildrenCount == 0)
|
|
{
|
|
return 0f;
|
|
}
|
|
|
|
var height = 0f;
|
|
|
|
var spacing = EditorGUIUtility.standardVerticalSpacing;
|
|
var totalWidth = width - spacing * (ChildrenCount - 1);
|
|
var childWidth = totalWidth / ChildrenCount;
|
|
|
|
for (var i = 0; i < ChildrenCount; i++)
|
|
{
|
|
var child = GetChild(i);
|
|
var childHeight = child.GetHeight(childWidth);
|
|
|
|
height = Mathf.Max(height, childHeight);
|
|
}
|
|
|
|
return height;
|
|
}
|
|
|
|
public override void OnGUI(Rect position)
|
|
{
|
|
if (ChildrenCount == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var spacing = EditorGUIUtility.standardVerticalSpacing;
|
|
var totalWidth = position.width - spacing * (ChildrenCount - 1);
|
|
var childWidth = totalWidth / ChildrenCount;
|
|
|
|
for (var i = 0; i < ChildrenCount; i++)
|
|
{
|
|
var child = GetChild(i);
|
|
var childRect = new Rect(position)
|
|
{
|
|
width = childWidth,
|
|
height = child.GetHeight(childWidth),
|
|
x = position.x + i * (childWidth + spacing),
|
|
};
|
|
|
|
using (TriGuiHelper.PushLabelWidth(EditorGUIUtility.labelWidth / ChildrenCount))
|
|
{
|
|
child.OnGUI(childRect);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |