public void InputsGUI()
{
List<ProceduralPropertyDescription> list2;
List<ProceduralPropertyDescription> list5;
List<string> list = new List<string>();
Dictionary<string, List<ProceduralPropertyDescription>> dictionary = new Dictionary<string, List<ProceduralPropertyDescription>>();
Dictionary<string, List<ProceduralPropertyDescription>> dictionary2 = new Dictionary<string, List<ProceduralPropertyDescription>>();
ProceduralPropertyDescription[] proceduralPropertyDescriptions = m_Material.GetProceduralPropertyDescriptions();
ProceduralPropertyDescription hInput = null;
ProceduralPropertyDescription sInput = null;
ProceduralPropertyDescription lInput = null;
foreach (ProceduralPropertyDescription description4 in proceduralPropertyDescriptions)
{
if (description4.name == "$randomseed")
{
this.InputSeedGUI(description4);
}
else if (((description4.name.Length <= 0) || (description4.name[0] != '$')) && m_Material.IsProceduralPropertyVisible(description4.name))
{
string group = description4.group;
if ((group != string.Empty) && !list.Contains(group))
{
list.Add(group);
}
if (((description4.name == "Hue_Shift") && (description4.type == ProceduralPropertyType.Float)) && (group == string.Empty))
{
hInput = description4;
}
if (((description4.name == "Saturation") && (description4.type == ProceduralPropertyType.Float)) && (group == string.Empty))
{
sInput = description4;
}
if (((description4.name == "Luminosity") && (description4.type == ProceduralPropertyType.Float)) && (group == string.Empty))
{
lInput = description4;
}
if (description4.type == ProceduralPropertyType.Texture)
{
if (!dictionary2.ContainsKey(group))
{
dictionary2.Add(group, new List<ProceduralPropertyDescription>());
}
dictionary2[group].Add(description4);
}
else
{
if (!dictionary.ContainsKey(group))
{
dictionary.Add(group, new List<ProceduralPropertyDescription>());
}
dictionary[group].Add(description4);
}
}
}
bool flag = false;
if (((hInput != null) && (sInput != null)) && (lInput != null))
{
flag = true;
}
if (dictionary.TryGetValue(string.Empty, out list2))
{
foreach (ProceduralPropertyDescription description5 in list2)
{
if (!flag || (((description5 != hInput) && (description5 != sInput)) && (description5 != lInput)))
{
this.InputGUI(description5);
}
}
}
foreach (string str2 in list)
{
ProceduralMaterial target = base.target as ProceduralMaterial;
string key = target.name + str2;
GUILayout.Space(5f);
bool @bool = EditorPrefs.GetBool(key, true);
EditorGUI.BeginChangeCheck();
@bool = EditorGUILayout.Foldout(@bool, str2, true);
if (EditorGUI.EndChangeCheck())
{
EditorPrefs.SetBool(key, @bool);
}
if (@bool)
{
List<ProceduralPropertyDescription> list3;
List<ProceduralPropertyDescription> list4;
EditorGUI.indentLevel++;
if (dictionary.TryGetValue(str2, out list3))
{
foreach (ProceduralPropertyDescription description6 in list3)
{
this.InputGUI(description6);
}
}
if (dictionary2.TryGetValue(str2, out list4))
{
GUILayout.Space(2f);
foreach (ProceduralPropertyDescription description7 in list4)
{
this.InputGUI(description7);
}
}
EditorGUI.indentLevel--;
}
}
if (flag)
{
this.InputHSLGUI(hInput, sInput, lInput);
}
if (dictionary2.TryGetValue(string.Empty, out list5))
{
GUILayout.Space(5f);
foreach (ProceduralPropertyDescription description8 in list5)
{
this.InputGUI(description8);
}
}
}