Forráskód Böngészése

Split shaders in prefab list when too long

Clement Espeute 1 éve
szülő
commit
06585e21e0
3 módosított fájl, 33 hozzáadás és 24 törlés
  1. 26 0
      hide/comp/SceneEditor.hx
  2. 0 24
      hide/view/FXEditor.hx
  3. 7 0
      hide/view/Prefab.hx

+ 26 - 0
hide/comp/SceneEditor.hx

@@ -828,6 +828,32 @@ class SceneEditor {
 		});
 	}
 
+	function splitMenu(menu : Array<hide.comp.ContextMenu.ContextMenuItem>, name : String, entries : Array<hide.comp.ContextMenu.ContextMenuItem>, len : Int = 30) {
+		entries.sort((a,b) -> Reflect.compare(a.label, b.label));
+
+		var pos = 0;
+		while(true) {
+			var arr = entries.slice(pos, pos+len);
+			if (arr.length == 0) {
+				break;
+			}
+			var label = name;
+			var firstChar = arr[0].label.charAt(0);
+			var endChar = (entries.length < pos+len) ? "Z" : arr[arr.length-1].label.charAt(0);
+
+			var label = name + " " + firstChar + "-" + endChar;
+			if (pos == 0 && arr.length < len) {
+				label = name;
+			}
+			menu.push({
+				label: label,
+				menu: arr
+			});
+
+			pos += len;
+		}
+	}
+
 	function getTagMenu(p: PrefabElement) : Array<hide.comp.ContextMenu.ContextMenuItem> {
 		var tags = getAvailableTags(p);
 		if(tags == null) return null;

+ 0 - 24
hide/view/FXEditor.hx

@@ -166,31 +166,7 @@ private class FXSceneEditor extends hide.comp.SceneEditor {
 
 		var menu = [];
 
-		function splitMenu(menu : Array<hide.comp.ContextMenu.ContextMenuItem>, name : String, entries : Array<hide.comp.ContextMenu.ContextMenuItem>, len : Int = 30) {
-			entries.sort((a,b) -> Reflect.compare(a.label, b.label));
 
-			var pos = 0;
-			while(true) {
-				var arr = entries.slice(pos, pos+len);
-				if (arr.length == 0) {
-					break;
-				}
-				var label = name;
-				var firstChar = arr[0].label.charAt(0);
-				var endChar = (entries.length < pos+len) ? "Z" : arr[arr.length-1].label.charAt(0);
-
-				var label = name + " " + firstChar + "-" + endChar;
-				if (pos == 0 && arr.length < len) {
-					label = name;
-				}
-				menu.push({
-					label: label,
-					menu: arr
-				});
-
-				pos += len;
-			}
-		}
 
 		var shaderItems : Array<hide.comp.ContextMenu.ContextMenuItem> = [];
 

+ 7 - 0
hide/view/Prefab.hx

@@ -161,6 +161,13 @@ class PrefabSceneEditor extends hide.comp.SceneEditor {
 			label : "Recents",
 			menu : recents,
 		});
+
+		newItems.push({label: null, isSeparator: true});
+
+		var shaders = newItems.find(i -> i.label == "Shader");
+		newItems.remove(shaders);
+		splitMenu(newItems, "Shader", shaders.menu);
+
 		return newItems;
 	}