PlasticSplitterGUILayout.cs
2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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");
}
}