/// <summary> /// Frame update for GUI objects. Heartbeat of the window that /// allows us to update the UI /// </summary> public void OnGUI() { // *** ENTER SECTION *** GUILayout.BeginVertical(EditorHelper.GroupBox); GUILayout.Space(5f); GUILayout.BeginHorizontal(); string lOriginalSearch = mSearchString; mSearchString = GUILayout.TextField(lOriginalSearch, GUI.skin.FindStyle("ToolbarSeachTextField"), GUILayout.ExpandWidth(true)); if (mSearchString != lOriginalSearch) { mSelectedItemIndex = -1; MotionSelectWindow.GetFilteredMotionTypes(mFilteredTypes, mMasterTypes, mSearchString); } if (GUILayout.Button("", GUI.skin.FindStyle("ToolbarSeachCancelButton"))) { GUI.FocusControl(null); mSearchString = ""; mSelectedItemIndex = -1; MotionSelectWindow.GetFilteredMotionTypes(mFilteredTypes, mMasterTypes, mSearchString); } GUILayout.EndHorizontal(); GUILayout.Space(5f); GUILayout.EndVertical(); // *** MID SECTION *** GUILayout.BeginHorizontal(); mScrollPosition = GUILayout.BeginScrollView(mScrollPosition, ScrollArea); if (mFilteredTypes != null) { for (int i = 0; i < mFilteredTypes.Count; i++) { GUILayout.BeginHorizontal(); mFilteredTypes[i].IsSelected = GUILayout.Toggle(mFilteredTypes[i].IsSelected, "", GUILayout.Width(16f)); GUIStyle lRowStyle = (i == mSelectedItemIndex ? EditorHelper.SelectedLabel : EditorHelper.Label); if (GUILayout.Button(mFilteredTypes[i].Name, lRowStyle, GUILayout.MinWidth(100))) { mSelectedItemIndex = i; } GUILayout.EndHorizontal(); } } GUILayout.EndScrollView(); GUILayout.Space(5f); GUILayout.BeginVertical(EditorHelper.Box, GUILayout.MinWidth(200f)); string lName = (mSelectedItemIndex < 0 || mSelectedItemIndex >= mFilteredTypes.Count ? "" : mFilteredTypes[mSelectedItemIndex].Name); GUILayout.Label(lName, TitleStyle, GUILayout.Height(17f)); if (mSelectedItemIndex >= 0 && mSelectedItemIndex < mFilteredTypes.Count) { GUILayout.BeginHorizontal(); string lPath = mFilteredTypes[mSelectedItemIndex].Path; if (GUILayout.Button(EditorGUIUtility.FindTexture("cs Script Icon"), GUI.skin.label, GUILayout.Width(20), GUILayout.Height(20))) { foreach (var lAssetPath in AssetDatabase.GetAllAssetPaths()) { if (lAssetPath.EndsWith(lPath)) { var lScript = (MonoScript)AssetDatabase.LoadAssetAtPath(lAssetPath, typeof(MonoScript)); if (lScript != null && mFilteredTypes[mSelectedItemIndex].Type == lScript.GetClass()) { AssetDatabase.OpenAsset(lScript); break; } } } } if (GUILayout.Button(lPath, PathStyle)) { foreach (var lAssetPath in AssetDatabase.GetAllAssetPaths()) { if (lAssetPath.EndsWith(lPath)) { var lScript = (MonoScript)AssetDatabase.LoadAssetAtPath(lAssetPath, typeof(MonoScript)); if (lScript != null && mFilteredTypes[mSelectedItemIndex].Type == lScript.GetClass()) { AssetDatabase.OpenAsset(lScript); } } } } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.Space(3f); string lDescription = mFilteredTypes[mSelectedItemIndex].Description; GUILayout.Label(lDescription, DescriptionStyle); string lCategories = mFilteredTypes[mSelectedItemIndex].TypeTags; if (lCategories != null && lCategories.Length > 0) { GUILayout.FlexibleSpace(); GUILayout.Label("Tags: " + lCategories, TagsStyle); } else { GUILayout.FlexibleSpace(); } } else { GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); // *** BUTTON SECTION *** GUILayout.BeginVertical(EditorHelper.GroupBox); GUILayout.Space(2f); GUILayout.BeginHorizontal(); int lCount = 0; for (int i = 0; i < mMasterTypes.Count; i++) { if (mMasterTypes[i].IsSelected) { lCount++; } } if (GUILayout.Button("deselect all (" + lCount + ")", GUI.skin.label, GUILayout.Width(100f))) { for (int i = 0; i < mMasterTypes.Count; i++) { mMasterTypes[i].IsSelected = false; } } GUILayout.FlexibleSpace(); if (GUILayout.Button("Select", GUILayout.Width(70))) { if (OnSelectedEvent != null) { List <Type> lMotionTypes = new List <Type>(); for (int i = 0; i < mMasterTypes.Count; i++) { if (mMasterTypes[i].IsSelected) { lMotionTypes.Add(mMasterTypes[i].Type); } } OnSelectedEvent(lMotionTypes); } mSelectedItemIndex = -1; Close(); } if (GUILayout.Button("Cancel", GUILayout.Width(70))) { mSelectedItemIndex = -1; Close(); } GUILayout.EndHorizontal(); GUILayout.Space(2f); GUILayout.EndVertical(); }
/// <summary> /// Initializes the window /// </summary> public void Awake() { MotionSelectWindow.GetMasterMotionTypes(mMasterTypes); MotionSelectWindow.GetFilteredMotionTypes(mFilteredTypes, mMasterTypes, mSearchString); }