void OnGUI() { if (isAtlasDirty) { EditorUtility.SetDirty(uftAtlas); isAtlasDirty = false; } EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(new GUILayoutOption[] { GUILayout.Width(200f) }); EditorGUILayout.Separator(); EditorGUILayout.LabelField("Atlas:"); string newName = EditorGUILayout.TextField("name", uftAtlas.atlasName); if (newName != uftAtlas.atlasName) { uftAtlas.atlasName = newName; } UFTAtlasMetadata newMeta = (UFTAtlasMetadata)EditorGUILayout.ObjectField((Object)atlasMetadata, typeof(UFTAtlasMetadata), false); if (newMeta != atlasMetadata) { if (uftAtlas.atlasEntries.Count == 0 || (uftAtlas.atlasEntries.Count > 0 && EditorUtility.DisplayDialog("This action will remove all existing textures on your atlas", "Do you want to proceed?", "Proceed", "Cancel"))) { if (UFTAtlasEditorEventManager.onAtlasMetadataObjectChanged != null) { UFTAtlasEditorEventManager.onAtlasMetadataObjectChanged(newMeta); } atlasMetadata = newMeta; } } EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("new")) { if (uftAtlas.atlasEntries.Count == 0 || (uftAtlas.atlasEntries.Count > 0 && EditorUtility.DisplayDialog("This action will remove all existing textures on your atlas", "Do you want to proceed?", "Proceed", "Cancel"))) { onClickNew(); } } if (GUILayout.Button("save")) { onClickSave(); } EditorGUILayout.EndHorizontal(); UFTAtlasSize newWidth = (UFTAtlasSize)EditorGUILayout.EnumPopup("width", uftAtlas.atlasWidth); UFTAtlasSize newHeight = (UFTAtlasSize)EditorGUILayout.EnumPopup("height", uftAtlas.atlasHeight); EditorGUILayout.Separator(); EditorGUILayout.LabelField("Allign:"); uftAtlas.borderSize = EditorGUILayout.IntField("border size", uftAtlas.borderSize); if (GUILayout.Button("allign") && uftAtlas != null && uftAtlas.atlasEntries.Count > 0) { uftAtlas.arrangeEntriesUsingUnityPackager(); } if (newWidth != uftAtlas.atlasWidth || newHeight != uftAtlas.atlasHeight) { uftAtlas.atlasWidth = newWidth; uftAtlas.atlasHeight = newHeight; if (UFTAtlasEditorEventManager.onAtlasSizeChanged != null) { UFTAtlasEditorEventManager.onAtlasSizeChanged((int)newWidth, (int)newHeight); } } EditorGUILayout.Separator(); EditorGUILayout.LabelField("Atlas Textures [" + uftAtlas.atlasEntries.Count + "]:"); if (uftAtlas.atlasEntries.Count > 0) { if (GUILayout.Button("trim alpha")) { uftAtlas.trimAllEntries(); } } atlasTexturesScrollPosition = EditorGUILayout.BeginScrollView(atlasTexturesScrollPosition); if (uftAtlas.atlasEntries.Count > 0) { List <string> names = uftAtlas.atlasEntries.ConvertAll(new System.Converter <UFTAtlasEntry, string>(uftAtlasEntryToString)); names.Sort(); foreach (string name in names) { EditorGUILayout.LabelField(name, GUILayout.MaxWidth(220f)); } } EditorGUILayout.EndScrollView(); EditorGUILayout.Separator(); EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); GUILayoutUtility.GetRect((int)uftAtlas.atlasWidth, (int)uftAtlas.atlasHeight); uftAtlas.OnGUI(); EditorGUILayout.EndScrollView(); EditorGUILayout.Separator(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); if (Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragPerform) { DragAndDrop.visualMode = DragAndDropVisualMode.Copy; // show a drag-add icon on the mouse cursor if (Event.current.type == EventType.dragPerform) { HandleDroppedObjects(DragAndDrop.objectReferences); } DragAndDrop.AcceptDrag(); Event.current.Use(); } }
void OnGUI() { if (isAtlasDirty) { EditorUtility.SetDirty(uftAtlas); isAtlasDirty = false; } EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(new GUILayoutOption[] { GUILayout.Width(200f) }); EditorGUILayout.Separator(); EditorGUILayout.LabelField("Atlas:"); string newName = EditorGUILayout.TextField("name", uftAtlas.atlasName); if (newName != uftAtlas.atlasName) { uftAtlas.atlasName = newName; } UFTAtlasMetadata newMeta = (UFTAtlasMetadata)EditorGUILayout.ObjectField((Object)atlasMetadata, typeof(UFTAtlasMetadata), false); if (newMeta != atlasMetadata) { if (uftAtlas.atlasEntries.Count == 0 || (uftAtlas.atlasEntries.Count > 0 && EditorUtility.DisplayDialog("This action will remove all existing textures on your atlas", "Do you want to proceed?", "Proceed", "Cancel"))) { if (UFTAtlasEditorEventManager.onAtlasMetadataObjectChanged != null) { UFTAtlasEditorEventManager.onAtlasMetadataObjectChanged(newMeta); } atlasMetadata = newMeta; } } EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("new")) { if (uftAtlas.atlasEntries.Count == 0 || (uftAtlas.atlasEntries.Count > 0 && EditorUtility.DisplayDialog("This action will remove all existing textures on your atlas", "Do you want to proceed?", "Proceed", "Cancel"))) { onClickNew(); } } if (GUILayout.Button("save")) { onClickSave(); } EditorGUILayout.EndHorizontal(); UFTAtlasSize newWidth = (UFTAtlasSize)EditorGUILayout.EnumPopup("width", uftAtlas.atlasWidth); UFTAtlasSize newHeight = (UFTAtlasSize)EditorGUILayout.EnumPopup("height", uftAtlas.atlasHeight); uftAtlas.currentDragMode = (UFTAtlas.DragMode)EditorGUILayout.EnumPopup(uftAtlas.currentDragMode); EditorGUILayout.Separator(); EditorGUILayout.LabelField("Align:"); uftAtlas.borderSize = Mathf.Max(0, EditorGUILayout.IntField("border size", uftAtlas.borderSize)); bool autoAlign = GUILayout.Button("auto align & size"); bool normalAlign = GUILayout.Button("align"); if ((autoAlign || normalAlign) && uftAtlas != null && uftAtlas.atlasEntries.Count > 0) { bool successful = true; if (normalAlign) { successful = uftAtlas.arrangeEntriesUsingUnityPackager(); } if (autoAlign) { UFTAtlasSize oldWidth = uftAtlas.atlasWidth; UFTAtlasSize oldHeight = uftAtlas.atlasHeight; int w = (int)128; int h = (int)128; while (true) { uftAtlas.atlasHeight = (UFTAtlasSize)(w); uftAtlas.atlasWidth = (UFTAtlasSize)(h); if (uftAtlas.arrangeEntriesUsingUnityPackager()) { break; } if (uftAtlas.atlasWidth == UFTAtlasSize._4096 && uftAtlas.atlasHeight == UFTAtlasSize._4096) { successful = false; break; } uftAtlas.atlasHeight = (UFTAtlasSize)(w * 2); uftAtlas.atlasWidth = (UFTAtlasSize)(h); if (uftAtlas.arrangeEntriesUsingUnityPackager()) { break; } uftAtlas.atlasHeight = (UFTAtlasSize)(w); uftAtlas.atlasWidth = (UFTAtlasSize)(h * 2); if (uftAtlas.arrangeEntriesUsingUnityPackager()) { break; } w *= 2; h *= 2; } if (!successful) { uftAtlas.atlasWidth = oldWidth; uftAtlas.atlasHeight = oldHeight; } else if (uftAtlas.atlasWidth != oldWidth || uftAtlas.atlasHeight != oldHeight) { newWidth = uftAtlas.atlasWidth; newHeight = uftAtlas.atlasHeight; uftAtlas.atlasWidth = oldWidth; uftAtlas.atlasHeight = oldHeight; } } if (successful) { alignSuccesful = "Alignment successful. "; } else { alignSuccesful = "Alignment failed! Try extending atlas size"; } } GUILayout.Label(alignSuccesful); if (newWidth != uftAtlas.atlasWidth || newHeight != uftAtlas.atlasHeight) { uftAtlas.atlasWidth = newWidth; uftAtlas.atlasHeight = newHeight; if (UFTAtlasEditorEventManager.onAtlasSizeChanged != null) { UFTAtlasEditorEventManager.onAtlasSizeChanged((int)newWidth, (int)newHeight); } } EditorGUILayout.Separator(); EditorGUILayout.LabelField("Atlas Textures [" + uftAtlas.atlasEntries.Count + "]:"); atlasTexturesScrollPosition = EditorGUILayout.BeginScrollView(atlasTexturesScrollPosition); if (uftAtlas.atlasEntries.Count > 0) { List <string> names = uftAtlas.atlasEntries.ConvertAll(new System.Converter <UFTAtlasEntry, string>(uftAtlasEntryToString)); names.Sort(); foreach (string name in names) { EditorGUILayout.BeginHorizontal(); GUI.color = Color.red; if (GUILayout.Button("x")) { int index = uftAtlas.atlasEntries.FindIndex(o => o.textureName == name); uftAtlas.atlasEntries.RemoveAt(index); } GUI.color = Color.white; EditorGUILayout.LabelField(name, GUILayout.MaxWidth(220f)); EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndScrollView(); EditorGUILayout.Separator(); EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition); GUILayoutUtility.GetRect((int)uftAtlas.atlasWidth, (int)uftAtlas.atlasHeight); uftAtlas.OnGUI(); EditorGUILayout.EndScrollView(); EditorGUILayout.Separator(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); if (Event.current.type == EventType.DragUpdated || Event.current.type == EventType.DragPerform) { DragAndDrop.visualMode = DragAndDropVisualMode.Copy; // show a drag-add icon on the mouse cursor if (Event.current.type == EventType.dragPerform) { HandleDroppedObjects(DragAndDrop.objectReferences); } DragAndDrop.AcceptDrag(); Event.current.Use(); } }