public void Draw(TexturePacker texPacker) { GUILayout.Label("Preview", TexturePackerStyles.Heading); GUILayout.BeginVertical(TexturePackerStyles.Section); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); Vector2 previewSize = new Vector2(256, 256); GUILayout.Label("", TexturePackerStyles.MidBox, GUILayout.Width(previewSize.x), GUILayout.Height(previewSize.y)); Rect previewRect = GUILayoutUtility.GetLastRect(); Rect alphaRect = new Rect(previewRect.x + 5, previewRect.y + 5, previewRect.width - 10, previewRect.height - 10); texPacker.ClearProperties(); Texture2D preview = texPacker.Create(); preview.alphaIsTransparency = true; if (toolbarItem == 0) { EditorGUI.DrawPreviewTexture(alphaRect, preview); } else { EditorGUI.DrawTextureAlpha(alphaRect, preview); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); string[] toolbarItems = { "RBG", "Alpha" }; toolbarItem = GUILayout.Toolbar(toolbarItem, toolbarItems); GUILayout.EndVertical(); }
private void OnGUI() { if (_preview == null) { return; } _windowScrollPos = EditorGUILayout.BeginScrollView(_windowScrollPos, false, false); RefreshItems(); GUILayout.Label(_windowTitle, TexturePackerStyles.Heading); GUILayout.BeginVertical(TexturePackerStyles.Section); GUILayout.Label("Inputs", TexturePackerStyles.Heading); foreach (TextureItem item in _items) { item.Draw(); } EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("+")) { TextureInput entry = new TextureInput(); _texturePacker.Add(entry); _items.Add(new TextureItem(entry)); } GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); int prevRes = _texturePacker.resolution; _texturePacker.resolution = 128; _preview.Draw(_texturePacker); _texturePacker.resolution = prevRes; GUILayout.Label("Options", TexturePackerStyles.Heading); GUILayout.BeginVertical(TexturePackerStyles.Section); textureFormat = (TextureFormat)EditorGUILayout.EnumPopup("> Format:", textureFormat); _texturePacker.resolution = EditorGUILayout.IntPopup("> Resolution:", _texturePacker.resolution, _textureResolutionsNames.ToArray(), _textureResolutions.ToArray()); GUILayout.EndVertical(); if (GUILayout.Button("Generate Texture", TexturePackerStyles.Button)) { string savePath = EditorUtility.SaveFilePanel("Save", Application.dataPath, "texture.png", textureFormat.ToString()); if (savePath != string.Empty) { Texture2D output = _texturePacker.Create(); if (textureFormat == TextureFormat.JPG) { File.WriteAllBytes(savePath, output.EncodeToJPG()); } else if (textureFormat == TextureFormat.PNG) { File.WriteAllBytes(savePath, output.EncodeToPNG()); } else if (textureFormat == TextureFormat.TGA) { File.WriteAllBytes(savePath, output.EncodeToTGA()); } else { File.WriteAllBytes(savePath, output.EncodeToEXR()); } AssetDatabase.Refresh(); } } GUILayout.EndVertical(); EditorGUILayout.EndScrollView(); }