Exemplo n.º 1
0
    void GeneratePrefab(NestedPrefabData prefabData)
    {
        // Debug.Log("NestedPrefab::GeneratePrefab - prefabData " + prefabData.prefabPath + " ");

        Transform parent = GetHierarchyTransform(prefabData.hierarchyPathId);

        GameObject clone = prefabGenerator.GenerateFrom(prefabData.prefabPath);

        if (clone == null)
        {
            Debug.LogError("Error when trying to generate prefab " + prefabData.prefabPath + " !", this);
        }

        clone.transform.parent = parent;

        prefabData.CopyDataTo(clone.transform);

        // Recursive generation
        NestedPrefab nestedPrefab = clone.GetComponent <NestedPrefab>();

        if (nestedPrefab != null)
        {
            nestedPrefab.prefabGenerator = prefabGenerator;
            nestedPrefab.GeneratePrefabs(false); // Avoid to ask permission twice
        }
    }
Exemplo n.º 2
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        NestedPrefab nestedPrefab = target as NestedPrefab;

        if (nestedPrefab == null)
        {
            return;
        }

        if (!Application.isPlaying)
        {
            nestedPrefab.prefabGenerator = new DefaultPrefabGeneration();
        }

        if (GUILayout.Button("Save Nested Prefabs"))
        {
            nestedPrefab.SavePrefabData();
        }

        if (GUILayout.Button("Generate Prefabs"))
        {
            nestedPrefab.GeneratePrefabs();
        }
    }
Exemplo n.º 3
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        NestedPrefab nestedPrefab = target as NestedPrefab;

        if (nestedPrefab == null)
        {
            return;
        }

        nestedPrefab.prefabGenerator = new DefaultPrefabGeneration();

        if (GUILayout.Button("Save Nested Prefabs"))
        {
            nestedPrefab.SavePrefabData();
        }

        if (GUILayout.Button("Revert Prefabs"))
        {
            nestedPrefab.GeneratePrefabs();
        }

        if (nestedPrefab.prefabDetailsVisibility)
        {
            EditorGUILayout.Space();

            EditorGUILayout.LabelField("List of Nested Prefabs:", EditorStyles.boldLabel);

            EditorGUILayout.Space();

            for (int i = 0; i < nestedPrefab.nestedPrefabsData.Count; i++)
            {
                NestedPrefabData prefabData = nestedPrefab.nestedPrefabsData[i];

                // GameObject prefabParent = PrefabUtility.GetPrefabParent(prefabData.prefabObject) as GameObject;
                // string prefabPath = AssetDatabase.GetAssetPath(prefabParent);

                EditorGUILayout.LabelField("" + i + ". " + prefabData.hierarchyPath + " from " + prefabData.prefabPath);

                // PrefabUtility.GetPropertyModifications
            }
        }
    }