Ejemplo n.º 1
0
    static void createTileSet(bool reImport)
    {
        updatedPrefabsCounter = 0;
        newPrefabsCounter     = 0;
        tileImportProgress    = 0f;

        tilesetData             = ScriptableObject.CreateInstance <YuME_tilesetData>();
        tilesetData.tileSetName = userSettings.c_name;

        GameObject[] sourcePrefabs;

        sourcePrefabs = YuTools_Utils.loadDirectoryContents(userSettings.c_sourceFolder, "*.prefab");

        if (sourcePrefabs.Length == 0)
        {
            sourcePrefabs = YuTools_Utils.loadDirectoryContents(userSettings.c_sourceFolder, "*.obj");
        }

        if (sourcePrefabs.Length == 0)
        {
            sourcePrefabs = YuTools_Utils.loadDirectoryContents(userSettings.c_sourceFolder, "*.fbx");
        }

        bool validTile = false;

        foreach (GameObject child in sourcePrefabs)
        {
            // display the conversion progress based on the number of tiles found on the source tile set
            EditorUtility.DisplayProgressBar("Building Tile Set", "Tile " + tileImportProgress + " / " + sourcePrefabs.Length + " being exported", (float)(tileImportProgress / sourcePrefabs.Length));

            validTile = convertPrefabNew(child.gameObject, child.name, reImport);

            if (!validTile)
            {
                Debug.Log("---- invalid Tile");
            }

            tileImportProgress++;
        }

        if (!AssetDatabase.IsValidFolder(userSettings.c_destinationFolder + "/CustomBrushes"))
        {
            AssetDatabase.CreateFolder(userSettings.c_destinationFolder, "CustomBrushes");
        }

        try
        {
            tilesetData.customBrushDestinationFolder = userSettings.c_destinationFolder + "/CustomBrushes";
            AssetDatabase.CreateAsset(tilesetData, userSettings.c_destinationFolder + "/" + userSettings.c_name + "_tileSet.asset");
        }
        catch
        {
            Debug.Log("Destination folder is invalid. Please select a different folder.");
        }

        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh(); // refesh the asset database to tell unity changes have been made

        EditorUtility.ClearProgressBar();
    }
Ejemplo n.º 2
0
    static void loadPreviewTiles()
    {
        try
        {
            string path = YuTools_Utils.getAssetPath(availableTileSets[currentTileSetIndex]);

            currentTileSetObjects = YuTools_Utils.loadDirectoryContents(path, "*.prefab");
            currentTile           = currentTileSetObjects[0];
        }
        catch
        {
            Debug.Log("Tile Sets seem to be missing. Please reload the tile sets");
        }
    }
Ejemplo n.º 3
0
    public static void recreateCustomBrushes(string path)
    {
        float customBrushCounter = 0f;

        GameObject[] customBrushes = YuTools_Utils.loadDirectoryContents(path + "/CustomBrushes", "*_YuME.prefab");

        if (customBrushes != null)
        {
            foreach (GameObject brush in customBrushes)
            {
                EditorUtility.DisplayProgressBar("Rebuilding Custom Brushes", "Brush " + customBrushCounter + " / " + customBrushes.Length + " being exported", (float)(customBrushCounter / customBrushes.Length));

                Object prefabAlreadyCreated = AssetDatabase.LoadAssetAtPath(path + "/CustomBrushes/" + brush.name + ".prefab", typeof(GameObject));

                if (prefabAlreadyCreated != null)
                {
                    GameObject newTileParent = new GameObject();
                    newTileParent.transform.position = Vector3.zero;
                    newTileParent.name = brush.name;
                    newTileParent.AddComponent <YuME_tileGizmo>();

                    foreach (Transform tile in brush.transform)
                    {
                        string[] guids = AssetDatabase.FindAssets(tile.name);

                        if (guids != null)
                        {
                            GameObject sourceTile = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guids[0]), typeof(GameObject)) as GameObject;

                            GameObject newTile = (GameObject)Object.Instantiate(sourceTile);
                            newTile.transform.position    = tile.position;
                            newTile.transform.eulerAngles = tile.eulerAngles;
                            newTile.transform.parent      = newTileParent.transform;
                            newTile.name = tile.name;
                        }
                    }

#if UNITY_2018_3_OR_NEWER
                    PrefabUtility.SaveAsPrefabAssetAndConnect(newTileParent, path + "/CustomBrushes/" + brush.name + ".prefab", InteractionMode.AutomatedAction);
#else
                    PrefabUtility.ReplacePrefab(newTileParent, prefabAlreadyCreated, ReplacePrefabOptions.ReplaceNameBased); // replace the existing prefab with the updated data
#endif
                    DestroyImmediate(newTileParent);
                    customBrushCounter++;
                }

                EditorUtility.ClearProgressBar();
            }
        }
    }
Ejemplo n.º 4
0
    static void swapTileSet()
    {
        string path = YuTools_Utils.getAssetPath(YuME_mapEditor.availableTileSets[swapTileSetIndex]);

        swapTileSetObjects = YuTools_Utils.loadDirectoryContents(path, "*.prefab");

        List <GameObject> layerTiles = new List <GameObject>();

        if (swapTileSetObjects != null)
        {
            GameObject swapTile;

            if (YuME_mapEditor.findTileMapParent())
            {
                Undo.RegisterFullObjectHierarchyUndo(YuME_mapEditor.tileMapParent, "Swap Tiles");

                foreach (Transform layer in YuME_mapEditor.tileMapParent.transform)
                {
                    if (layer.gameObject.name.Contains("layer"))
                    {
                        layerTiles.Clear();

                        foreach (Transform tile in layer)
                        {
                            layerTiles.Add(tile.gameObject);
                        }

                        for (int i = 0; i < layerTiles.Count; i++)
                        {
                            for (int swap = 0; swap < swapTileSetObjects.Length; swap++)
                            {
                                if (layerTiles[i].name == swapTileSetObjects[swap].name)
                                {
                                    EditorUtility.DisplayProgressBar("Swapping Tileset", layerTiles[i].name, (float)i / (float)layerTiles.Count);
                                    swapTile = PrefabUtility.InstantiatePrefab(swapTileSetObjects[swap] as GameObject) as GameObject;
                                    swapTile.transform.parent      = layer;
                                    swapTile.transform.position    = layerTiles[i].transform.position;
                                    swapTile.transform.eulerAngles = layerTiles[i].transform.eulerAngles;
                                    swapTile.transform.GetChild(0).transform.position = layerTiles[i].transform.GetChild(0).transform.position;
                                    DestroyImmediate(layerTiles[i]);
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Ejemplo n.º 5
0
    public static void loadCustomBrushes()
    {
        try
        {
            string path = YuTools_Utils.getAssetPath(availableTileSets[currentTileSetIndex]) + "CustomBrushes";

            if (path != null)
            {
                currentCustomBrushes = YuTools_Utils.loadDirectoryContents(path, "*_YuME.prefab");

                if (currentCustomBrushes == null)
                {
                    createCustomBrushFolder(path);
                }
            }
        }
        catch
        {
            Debug.Log("Custom Brush Folder missing");
        }
    }