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); }
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(); }