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);
        }
    }
Exemplo n.º 2
0
    /// <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();
    }