public override void OnInspectorGUI() { base.OnInspectorGUI(); EditorGUILayout.Space(); definitions = (ConfigurationDefinitions)EditorGUILayout.ObjectField("Definitions", definitions, typeof(ConfigurationDefinitions), true); if (definitions != null) { if (GUILayout.Button("Initialize")) { if (types == null) { types = new List <GameObject>(); } else { types.ForEach(g => DestroyImmediate(g)); types.Clear(); } //Indice tipo int i = 0; foreach (var t in definitions.GetAllTypes()) { GameObject currentType = new GameObject(); currentType.transform.SetParent(Target.transform); currentType.name = t; types.Add(currentType); //Indice valore int j = 0; foreach (var v in definitions.GetAllValues(t)) { GameObject currentValue = new GameObject(); currentValue.transform.SetParent(currentType.transform); currentValue.name = v; var configID = currentValue.AddComponent <ConfigurationID>(); configID.UpdateConfigs(definitions); currentValue.AddComponent <Configuration>(); //k tipo del configValues for (int k = 0; k < configID.configValues.Count; k++) { configID.configValues[k].ValueIndex = i == k ? j : ConfigValue.UNDEFINED_VALUE; } j++; } i++; } } Target.configurations = FindObjectsOfType <Configuration>() .Where(c => c.Id.GetType() == typeof(ConfigurationID)).ToList(); EditorUtility.SetDirty(Target.gameObject); } }
/// <summary> /// Popup from Resources folder. /// </summary> private void ShowAllDefinitions() { EditorGUILayout.Space(); List <ConfigurationDefinitions> defs = new List <ConfigurationDefinitions>(Resources.LoadAll <ConfigurationDefinitions>("")); List <string> names = defs.Select(d => d.name).ToList(); names.Insert(0, "None"); if (Target.currentConfiguration.definition == null) { indexDef = 0; } else { indexDef = names.IndexOf(Target.currentConfiguration.definition.name); } EditorGUILayout.BeginHorizontal(); indexDef = EditorGUILayout.Popup("Definition", indexDef, names.ToArray()); if (indexDef <= 0) { definitions = null; } else { definitions = defs[indexDef - 1]; } Target.currentConfiguration.definition = definitions; EditorGUI.BeginDisabledGroup(definitions == null); if (GUILayout.Button("Show", EditorStyles.miniButton, GUILayout.Width(50))) { EditorGUIUtility.PingObject(definitions); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); }