arenos-nexus/Arenos Nexus/Library/PackageCache/com.unity.collab-proxy@ab839cc7d2ad/Editor/UI/Tree/CenteredContentPanel.cs
Daniel 2e704cae70 init
Init Commit Unity
2025-09-25 22:01:28 +02:00

66 lines
1.6 KiB
C#

using System;
using UnityEngine;
namespace Unity.PlasticSCM.Editor.UI.Tree
{
internal abstract class CenteredContentPanel
{
internal CenteredContentPanel(Action repaintAction)
{
mRepaintAction = repaintAction;
}
internal void OnGUI(Rect rect)
{
if (Event.current.type == EventType.Repaint && mLastValidRect != rect)
{
mLastValidRect = rect;
mRepaintAction();
}
GUILayout.BeginArea(mLastValidRect);
DrawGUI();
GUILayout.EndArea();
}
protected abstract void DrawGUI();
protected static void CenterContent(params Action[] contents)
{
CenterVertical(() =>
{
foreach (Action content in contents)
{
CenterHorizontal(() =>
{
content();
});
}
});
}
static void CenterVertical(Action content)
{
GUILayout.BeginVertical();
GUILayout.FlexibleSpace();
content();
GUILayout.FlexibleSpace();
GUILayout.EndVertical();
}
static void CenterHorizontal(Action content)
{
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
content();
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
}
protected readonly Action mRepaintAction;
Rect mLastValidRect;
}
}