Browse Source

sorting for shadernodeblock. inclusive?

rickard 3 years ago
parent
commit
9cea04a3f4

+ 24 - 1
jme3-materialeditor/src/com/jme3/gde/materialdefinition/fileStructure/ShaderNodesBlock.java

@@ -8,6 +8,7 @@ import com.jme3.util.blockparser.Statement;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import org.openide.util.WeakListeners;
 
@@ -51,9 +52,31 @@ public class ShaderNodesBlock extends UberStatement implements PropertyChangeLis
     
     public void sort() {
         List<ShaderNodeBlock> list = getShaderNodes();
-        Collections.sort(list);        
+        Collections.sort(list, new NodeComparator());        
         contents.clear();
         contents.addAll(list);
         fire("reorder", null, null);
     }
+    
+    private class NodeComparator implements Comparator<ShaderNodeBlock>{
+
+        @Override
+        public int compare(ShaderNodeBlock o1, ShaderNodeBlock o2) {
+            if(o1.name.equals(o2.name)){
+                return 0;
+            }
+            for(String s : o1.inputNodes){
+                if(s.contains(o2.name)){
+                    return 1;
+                }
+            }
+            for(String s : o2.inputNodes){
+                if(s.contains(o1.name)){
+                    return -1;
+                }
+            }
+            return 0;
+        }
+        
+    }
 }