public void Match(string words, out SpriteIndex[] sprites, out int[] atlases) { if (mDirty) { mDirty = false; Refresh(); } var rets = new List <SpriteIndex>(); for (int i = 0; i < mAtlases.Count; i++) { var atlas = mAtlases[i]; rets.AddRange(AtlasEditorUtil.SearchSprites(atlas, i, words)); } sprites = rets.ToArray(); atlases = (from sprite in sprites group sprite by sprite.atlas into spriteGroup select spriteGroup.Key).ToArray(); }
public override void OnInspectorGUI() { OnValidateSelected(); var atlas = target as AtlasRaw; EditorGUILayout.GetControlRect(false, 2); int clickIndex = AtlasEditorUtil.TitleBar(new GUIContent[] { new GUIContent("+File"), new GUIContent("+Folder"), }); if (clickIndex == 0) { DisplayImportMenu(atlas, false); } else if (clickIndex == 1) { DisplayImportMenu(atlas, true); } mRepackFold = AtlasEditorUtil.ToggleBar(new GUIContent("Settings"), mRepackFold); if (mRepackFold) { if (!mPackDataInit) { mPackDataInit = true; mSetting = new PackSetting(atlas.maxSize, atlas.padding, atlas.isPOT, atlas.forceSquare); } EditorGUI.indentLevel += 1; mSetting.maxAtlasSize = EditorGUILayout.IntPopup("Max Size", mSetting.maxAtlasSize, Array.ConvertAll(PackConst.AtlasSizeList, value => value.ToString()), PackConst.AtlasSizeList); mSetting.padding = EditorGUILayout.IntField("Padding", mSetting.padding); mSetting.isPOT = EditorGUILayout.Toggle("Power Of 2", mSetting.isPOT); GUI.enabled = mSetting.isPOT; if (!mSetting.isPOT) { mSetting.forceSquare = false; } mSetting.forceSquare = EditorGUILayout.Toggle("Force Square", mSetting.forceSquare); GUI.enabled = true; var rect = EditorGUILayout.GetControlRect(false, 20); if (GUI.Button(new Rect(rect.center.x - 75, rect.y, 150, rect.height), "Repack")) { AtlasPacker.Repack(atlas, null, mSetting); } EditorGUI.indentLevel -= 1; EditorGUILayout.Space(); } EditorGUI.BeginChangeCheck(); mSearchPattern = AtlasEditorUtil.SearchBar(new GUIContent("Search Sprite"), mSearchPattern); if (EditorGUI.EndChangeCheck() || mAtlasDirty) { mSearchResults.Clear(); if (!string.IsNullOrEmpty(mSearchPattern)) { mSearchResults.AddRange(AtlasEditorUtil.SearchSprites(atlas, 0, mSearchPattern)); } } if (mAtlasDirty) { mAtlasDirty = false; mSelectedBin = Mathf.Clamp(mSelectedBin, 0, atlas.bins.Length - 1); mSelectedSprites.Clear(); } EditorGUI.indentLevel += 1; if (!string.IsNullOrEmpty(mSearchPattern)) { EditorGUILayout.LabelField(string.Format("{0} results", mSearchResults.Count)); } if (mSearchResults != null && mSearchResults.Count > 0) { OnValidateResult(); OnSearchResultGUI(); } EditorGUI.indentLevel -= 1; if (atlas.bins.Length > 0) { var titleRect = EditorGUILayout.GetControlRect(false, EditorStyles.toolbar.fixedHeight); var controlId = GUIUtility.GetControlID(FocusType.Passive); var eventType = Event.current.GetTypeForControl(controlId); if (eventType == EventType.Repaint) { EditorStyles.toolbar.Draw(titleRect, GUIContent.none, controlId); } var binNames = Array.ConvertAll(atlas.bins, i => PackUtil.GetDisplayName(i)); var binIndexes = new int[binNames.Length]; for (int i = 0; i < binNames.Length; i++) { binIndexes[i] = i; } mSelectedBin = EditorGUI.IntPopup(new Rect(10, titleRect.y, titleRect.width - 10, titleRect.height), "Preview Bin", mSelectedBin, binNames, binIndexes, EditorStyles.toolbarPopup); mSelectedBin = Mathf.Clamp(mSelectedBin, 0, atlas.bins.Length - 1); EditorGUILayout.Space(); var bin = atlas.bins[mSelectedBin]; var previewRect = EditorGUILayout.GetControlRect(false, 512); previewRect.width = Mathf.Min(previewRect.width, (float)bin.main.width / bin.main.height * previewRect.height); previewRect.height = (float)bin.main.height / bin.main.width * previewRect.width; OnPreviewBin(previewRect); } }