UnityGame/Library/PackageCache/com.unity.collab-proxy/Editor/PlasticSCM/UI/PlasticSplitterGUILayout.cs

66 lines
2.3 KiB
C#
Raw Permalink Normal View History

2024-10-27 10:53:47 +03:00
using System;
using System.Reflection;
using UnityEngine;
namespace Unity.PlasticSCM.Editor.UI
{
internal static class PlasticSplitterGUILayout
{
internal static void BeginHorizontalSplit(object splitterState)
{
InternalBeginHorizontalSplit.Invoke(
null, new object[] {splitterState, new GUILayoutOption[] { }});
}
internal static void EndHorizontalSplit()
{
InternalEndHorizontalSplit.Invoke(
null, new object[] { });
}
internal static void BeginVerticalSplit(object splitterState)
{
InternalBeginVerticalSplit.Invoke(
null, new object[] {splitterState, new GUILayoutOption[] { }});
}
internal static void EndVerticalSplit()
{
InternalEndVerticalSplit.Invoke(
null, new object[] { });
}
internal static object InitSplitterState(
float[] relativeSizes, int[] minSizes, int[] maxSizes)
{
ConstructorInfo ctorInfo = SplitterState.GetConstructor(
new Type[] {typeof(float[]), typeof(int[]), typeof(int[])});
return ctorInfo.Invoke(
new object[] {relativeSizes, minSizes, maxSizes});
}
static readonly Type SplitterState =
typeof(UnityEditor.Editor).Assembly.
GetType("UnityEditor.SplitterState");
static readonly Type InternalSplitterGUILayout =
typeof(UnityEditor.Editor).Assembly.
GetType("UnityEditor.SplitterGUILayout");
static readonly MethodInfo InternalBeginHorizontalSplit =
InternalSplitterGUILayout.GetMethod(
"BeginHorizontalSplit",
new Type[] { SplitterState, typeof(GUILayoutOption[]) });
static readonly MethodInfo InternalEndHorizontalSplit =
InternalSplitterGUILayout.GetMethod("EndHorizontalSplit");
static readonly MethodInfo InternalBeginVerticalSplit =
InternalSplitterGUILayout.GetMethod(
"BeginVerticalSplit",
new Type[] { SplitterState, typeof(GUILayoutOption[]) });
static readonly MethodInfo InternalEndVerticalSplit =
InternalSplitterGUILayout.GetMethod("EndVerticalSplit");
}
}