public override void OnGUI(GUIContent label) { var genericVariable = value as GenericVariable; EditorGUILayout.BeginVertical(); if (FieldInspector.DrawFoldout(genericVariable.GetHashCode(), label)) { EditorGUI.indentLevel++; if (variableNames == null) { var variables = VariableInspector.FindAllSharedVariableTypes(true); variableNames = new string[variables.Count]; for (int i = 0; i < variables.Count; ++i) { variableNames[i] = variables[i].Name.Remove(0, 6); // Remove "Shared" } } var index = 0; var variableName = genericVariable.type.Remove(0, 6); for (int i = 0; i < variableNames.Length; ++i) { if (variableNames[i].Equals(variableName)) { index = i; break; } } var newIndex = EditorGUILayout.Popup("Type", index, variableNames, BehaviorDesignerUtility.SharedVariableToolbarPopup); var variableType = VariableInspector.FindAllSharedVariableTypes(true)[newIndex]; // FindAllSharedVariableTypes caches the result so this is quick if (newIndex != index) { index = newIndex; genericVariable.value = Activator.CreateInstance(variableType) as SharedVariable; } GUILayout.Space(3); genericVariable.type = "Shared" + variableNames[index]; genericVariable.value = FieldInspector.DrawSharedVariable(new GUIContent("Value"), null, variableType, genericVariable.value); EditorGUI.indentLevel--; } EditorGUILayout.EndVertical(); }
public override void OnGUI(GUIContent label) { NamedVariable namedVariable = this.value as NamedVariable; EditorGUILayout.BeginVertical(new GUILayoutOption[0]); if (FieldInspector.DrawFoldout(namedVariable.GetHashCode(), label)) { EditorGUI.indentLevel++; if (SharedNamedVariableDrawer.variableNames == null) { List <Type> list = VariableInspector.FindAllSharedVariableTypes(true); SharedNamedVariableDrawer.variableNames = new string[list.Count]; for (int i = 0; i < list.Count; i++) { SharedNamedVariableDrawer.variableNames[i] = list[i].Name.Remove(0, 6); } } int num = 0; string value = namedVariable.type.Remove(0, 6); for (int j = 0; j < SharedNamedVariableDrawer.variableNames.Length; j++) { if (SharedNamedVariableDrawer.variableNames[j].Equals(value)) { num = j; break; } } namedVariable.name = EditorGUILayout.TextField("Name", namedVariable.name, new GUILayoutOption[0]); int num2 = EditorGUILayout.Popup("Type", num, SharedNamedVariableDrawer.variableNames, BehaviorDesignerUtility.SharedVariableToolbarPopup, new GUILayoutOption[0]); Type type = VariableInspector.FindAllSharedVariableTypes(true)[num2]; if (num2 != num) { num = num2; namedVariable.value = (Activator.CreateInstance(type) as SharedVariable); } GUILayout.Space(3f); namedVariable.type = "Shared" + SharedNamedVariableDrawer.variableNames[num]; namedVariable.value = FieldInspector.DrawSharedVariable(null, new GUIContent("Value"), null, type, namedVariable.value); EditorGUI.indentLevel--; } EditorGUILayout.EndVertical(); }
public override void OnGUI(GUIContent label) { GenericVariable genericVariable = this.value as GenericVariable; EditorGUILayout.BeginVertical(); if (FieldInspector.DrawFoldout(genericVariable.GetHashCode(), label)) { EditorGUI.indentLevel = (EditorGUI.indentLevel + 1); if (variableNames == null) { List <Type> list = VariableInspector.FindAllSharedVariableTypes(true); variableNames = new string[list.Count]; for (int i = 0; i < list.Count; i++) { variableNames[i] = list[i].Name.Remove(0, 6); } } int num = 0; string value = genericVariable.type.Remove(0, 6); for (int j = 0; j < variableNames.Length; j++) { if (variableNames[j].Equals(value)) { num = j; break; } } int num2 = EditorGUILayout.Popup("Type", num, variableNames, BehaviorDesignerUtility.SharedVariableToolbarPopup); Type type = VariableInspector.FindAllSharedVariableTypes(true)[num2]; if (num2 != num) { num = num2; genericVariable.value = (Activator.CreateInstance(type) as SharedVariable); } GUILayout.Space(3f); genericVariable.type = "Shared" + variableNames[num]; genericVariable.value = FieldInspector.DrawSharedVariable(null, new GUIContent("Value"), null, type, genericVariable.value); EditorGUI.indentLevel = (EditorGUI.indentLevel - 1); } EditorGUILayout.EndVertical(); }