Example #1
0
    private Sprite DrawTileSpriteSelector()
    {
        Sprite selectedTileSprite = null;

        TileDirectory tileTypes = (TileDirectory)AssetDatabase.LoadAssetAtPath(TileTypeWindow.FullTileDirectoryPath, typeof(TileDirectory));

        _selectedTileTypeIndex = EditorGUILayout.Popup("Tile to Paint", _selectedTileTypeIndex, tileTypes.TileTypes.ToStrings <TileType>());

        if (tileTypes.TileTypes.Count > 0)
        {
            selectedTileSprite = tileTypes.TileTypes[_selectedTileTypeIndex].TileSprite;
        }

        return(selectedTileSprite);
    }
Example #2
0
    void OnGUI()
    {
        scrollViewPos = EditorGUILayout.BeginScrollView(scrollViewPos);

        _directory = (TileDirectory)AssetDatabase.LoadAssetAtPath(FullTileDirectoryPath, typeof(TileDirectory));

        if (_directory == null)
        {
            if (GUILayout.Button("New Level Directory"))
            {
                _directory      = ScriptableObject.CreateInstance <TileDirectory>();
                _directory.name = TILE_DIRECTORY_NAME;

                AssetDatabase.CreateAsset(_directory, FullTileDirectoryPath);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }

            return;
        }

        int      tileNum      = 0;
        TileType typeToDelete = null;

        foreach (TileType tileType in _directory.TileTypes)
        {
            GUILayout.Space(TILE_TYPE_PREVIEW_MARGIN);

            EditorGUILayout.BeginHorizontal(GUILayout.MinHeight(TILE_TYPE_PREVIEW_HEIGHT - EditorGUIUtility.standardVerticalSpacing * 2));

            if (tileType.TileSprite != null)
            {
                EditorGUI.DrawTextureTransparent(new Rect(TILE_TYPE_PREVIEW_MARGIN, tileNum * TILE_TYPE_PREVIEW_HEIGHT + (tileNum + 1) * TILE_TYPE_PREVIEW_MARGIN, TILE_TYPE_PREVIEW_WIDTH, TILE_TYPE_PREVIEW_HEIGHT), tileType.TileSprite.texture);
            }

            GUILayout.Space(TILE_TYPE_PREVIEW_HEIGHT + TILE_TYPE_PREVIEW_MARGIN * 2);

            EditorGUILayout.BeginVertical();

            EditorGUIUtility.labelWidth = GUI.skin.label.CalcSize(new GUIContent(tileType.TileSprite == null ? "Tile Sprite" : tileType.TileSprite.name)).x + 5.0f;
            tileType.TileSprite         = (Sprite)EditorGUILayout.ObjectField(tileType.TileSprite == null ? "Tile Sprite" : tileType.TileSprite.name, tileType.TileSprite, typeof(Sprite), false);
            EditorGUIUtility.labelWidth = 0.0f;

            if (GUILayout.Button("Delete Tile Type"))
            {
                typeToDelete = tileType;
            }

            EditorGUILayout.EndVertical();

            EditorGUILayout.EndHorizontal();

            //GUILayout.Space(TILE_TYPE_PREVIEW_HEIGHT);

            tileNum++;
        }

        if (typeToDelete != null)
        {
            _directory.DeleteTileType(typeToDelete);
        }

        GUILayout.Space(TILE_TYPE_PREVIEW_MARGIN);

        if (GUILayout.Button("Add Tile Type"))
        {
            _directory.AddTileType();
        }

        EditorUtility.SetDirty(_directory);

        foreach (TileType tileType in _directory.TileTypes)
        {
            EditorUtility.SetDirty(tileType);
        }

        EditorGUILayout.EndScrollView();
    }