Skip to content

Commit 10c6e93

Browse files
authored
Merge pull request #61 from Unity-Technologies/searchbar
Searchbar
2 parents 813c31d + 51ac974 commit 10c6e93

File tree

4 files changed

+70
-7
lines changed

4 files changed

+70
-7
lines changed

Editor/AssetBundleBrowserMain.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,17 @@ namespace AssetBundleBrowser
1010
public class AssetBundleBrowserMain : EditorWindow, IHasCustomMenu, ISerializationCallbackReceiver
1111
{
1212

13+
private static AssetBundleBrowserMain m_instance = null;
14+
internal static AssetBundleBrowserMain instance
15+
{
16+
get
17+
{
18+
if (m_instance == null)
19+
m_instance = GetWindow<AssetBundleBrowserMain>();
20+
return m_instance;
21+
}
22+
}
23+
1324
internal const float kButtonWidth = 150;
1425

1526
enum Mode
@@ -41,9 +52,9 @@ enum Mode
4152
[MenuItem("Window/AssetBundle Browser", priority = 2050)]
4253
static void ShowWindow()
4354
{
44-
var window = GetWindow<AssetBundleBrowserMain>();
45-
window.titleContent = new GUIContent("AssetBundles");
46-
window.Show();
55+
m_instance = null;
56+
instance.titleContent = new GUIContent("AssetBundles");
57+
instance.Show();
4758
}
4859

4960
[SerializeField]

Editor/AssetBundleManageTab.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ internal class AssetBundleManageTab
3737
const float k_SplitterWidth = 3f;
3838
private static float m_UpdateDelay = 0f;
3939

40+
SearchField m_searchField;
4041

4142
EditorWindow m_Parent = null;
4243

@@ -66,6 +67,8 @@ internal void OnEnable(Rect pos, EditorWindow parent)
6667
(int)(m_Position.y + m_HorizontalSplitterRect.height * m_VerticalSplitterPercentLeft),
6768
(m_HorizontalSplitterRect.width) - k_SplitterWidth,
6869
k_SplitterWidth);
70+
71+
m_searchField = new SearchField();
6972
}
7073

7174

@@ -167,15 +170,18 @@ internal void OnGUI(Rect pos)
167170
//Right half.
168171
float panelLeft = m_HorizontalSplitterRect.x + k_SplitterWidth;
169172
float panelWidth = m_VerticalSplitterRectRight.width - k_SplitterWidth * 2;
170-
float panelHeight = m_VerticalSplitterRectRight.y - m_Position.y;
173+
float searchHeight = 20f;
174+
float panelTop = m_Position.y + searchHeight;
175+
float panelHeight = m_VerticalSplitterRectRight.y - panelTop;
176+
OnGUISearchBar(new Rect(panelLeft, m_Position.y, panelWidth, searchHeight));
171177
m_AssetList.OnGUI(new Rect(
172178
panelLeft,
173-
m_Position.y,
179+
panelTop,
174180
panelWidth,
175181
panelHeight));
176182
m_MessageList.OnGUI(new Rect(
177183
panelLeft,
178-
m_Position.y + panelHeight + k_SplitterWidth,
184+
panelTop + panelHeight + k_SplitterWidth,
179185
panelWidth,
180186
(m_Position.height - panelHeight) - k_SplitterWidth * 2));
181187

@@ -184,6 +190,16 @@ internal void OnGUI(Rect pos)
184190
}
185191
}
186192

193+
void OnGUISearchBar(Rect rect)
194+
{
195+
m_BundleTree.searchString = m_searchField.OnGUI(rect, m_BundleTree.searchString);
196+
m_AssetList.searchString = m_BundleTree.searchString;
197+
}
198+
199+
public bool hasSearch
200+
{
201+
get { return m_BundleTree.hasSearch; }
202+
}
187203

188204
private void HandleHorizontalResize()
189205
{

Editor/AssetBundleModel/ABModelBundleInfo.cs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace AssetBundleBrowser.AssetBundleModel
99
{
1010
internal class BundleTreeItem : TreeViewItem
11-
{
11+
{
1212
private BundleInfo m_Bundle;
1313
internal BundleInfo bundle
1414
{
@@ -25,6 +25,14 @@ internal MessageSystem.Message BundleMessage()
2525
{
2626
return m_Bundle.HighestMessage();
2727
}
28+
29+
public override string displayName
30+
{
31+
get
32+
{
33+
return AssetBundleBrowserMain.instance.m_ManageTab.hasSearch ? m_Bundle.m_Name.fullNativeName : m_Bundle.displayName;
34+
}
35+
}
2836
}
2937

3038
internal class BundleNameData
@@ -242,6 +250,8 @@ internal void ForceNeedUpdate()
242250

243251
abstract internal void HandleReparent(string parentName, BundleFolderInfo newParent = null);
244252
abstract internal List<AssetInfo> GetDependencies();
253+
254+
abstract internal bool DoesItemMatchSearch(string search);
245255
}
246256

247257
internal class BundleDataInfo : BundleInfo
@@ -545,6 +555,21 @@ internal override List<AssetInfo> GetDependencies()
545555
{
546556
return m_DependentAssets;
547557
}
558+
559+
internal override bool DoesItemMatchSearch(string search)
560+
{
561+
foreach(var asset in m_ConcreteAssets)
562+
{
563+
if (asset.displayName.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0)
564+
return true;
565+
}
566+
foreach (var asset in m_DependentAssets)
567+
{
568+
if (asset.displayName.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0)
569+
return true;
570+
}
571+
return false;
572+
}
548573
}
549574

550575
internal class BundleVariantDataInfo : BundleDataInfo
@@ -721,6 +746,11 @@ internal override void HandleDelete(bool isRootOfDelete, string forcedNewName=""
721746
m_Children.Clear();
722747
}
723748

749+
internal override bool DoesItemMatchSearch(string search)
750+
{
751+
return false; //folders don't ever match.
752+
}
753+
724754
protected override void RefreshMessages()
725755
{
726756
m_BundleMessages.SetFlag(MessageSystem.MessageFlag.ErrorInChildren, false);

Editor/AssetBundleTree.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ protected override bool CanRename(TreeViewItem item)
3131
return item.displayName.Length > 0;
3232
}
3333

34+
protected override bool DoesItemMatchSearch(TreeViewItem item, string search)
35+
{
36+
var bundleItem = item as AssetBundleModel.BundleTreeItem;
37+
return bundleItem.bundle.DoesItemMatchSearch(search);
38+
}
39+
3440
protected override void RowGUI(RowGUIArgs args)
3541
{
3642
var bundleItem = (args.item as AssetBundleModel.BundleTreeItem);

0 commit comments

Comments
 (0)