public static void ApplyCustom() { var window = RainbowFoldersPopup.GetDraggableWindow(); var position = RainbowFoldersEditorUtility.GetProjectWindow().position.position + new Vector2(10f, 30f); var paths = Selection.assetGUIDs.Select <string, string>(AssetDatabase.GUIDToAssetPath).Where(AssetDatabase.IsValidFolder).ToList(); window.ShowWithParams(position, paths.ToList(), 0); }
private static void DrawEditIcon(string guid, Rect rect) { if (!Event.current.alt) { _multiSelection = false; return; } var isSmall = IsIconSmall(ref rect); var isMouseOver = rect.Contains(Event.current.mousePosition); _multiSelection = (IsSelected(guid)) ? isMouseOver || _multiSelection : !isMouseOver && _multiSelection; // if mouse is not over current folder icon or selected group if (!isMouseOver && (!IsSelected(guid) || !_multiSelection)) { return; } var path = AssetDatabase.GUIDToAssetPath(guid); if (!AssetDatabase.IsValidFolder(path)) { return; } var editIcon = RainbowFoldersEditorUtility.GetEditFolderIcon(isSmall); DrawCustomIcon(ref rect, editIcon, isSmall); if (GUI.Button(rect, GUIContent.none, GUIStyle.none)) { var window = RainbowFoldersPopup.GetDraggableWindow(); var position = GUIUtility.GUIToScreenPoint(rect.position + new Vector2(0, rect.height + 2)); if (_multiSelection) { var assetGUIDs = Selection.assetGUIDs; var size = assetGUIDs.Length; var paths = new string[size]; for (var i = 0; i < size; i++) { paths[i] = AssetDatabase.GUIDToAssetPath(assetGUIDs[i]); } var index = ArrayUtility.IndexOf(paths, path); window.ShowWithParams(position, paths, index); } else { window.ShowWithParams(position, new[] { path }, 0); } } EditorApplication.RepaintProjectWindow(); }
private static void ShowPopupWindow(Rect rect, string path) { var window = RainbowFoldersPopup.GetDraggableWindow(); var position = GUIUtility.GUIToScreenPoint(rect.position + new Vector2(0, rect.height + 2)); if (_multiSelection) { // ReSharper disable once RedundantTypeArgumentsOfMethod var paths = Selection.assetGUIDs .Select <string, string>(AssetDatabase.GUIDToAssetPath) .Where(AssetDatabase.IsValidFolder).ToList(); var index = paths.IndexOf(path); window.ShowWithParams(position, paths, index); } else { window.ShowWithParams(position, new List <string> { path }, 0); } }