Browse Source

clrf test

rickard 3 years ago
parent
commit
09aeb23123

+ 266 - 267
jme3-materialeditor/src/com/jme3/gde/materialdefinition/fileStructure/TechniqueBlock.java

@@ -1,267 +1,266 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-package com.jme3.gde.materialdefinition.fileStructure;
-
-import com.jme3.gde.materialdefinition.fileStructure.leaves.DefineBlock;
-import com.jme3.gde.materialdefinition.fileStructure.leaves.FragmentShaderFileBlock;
-import com.jme3.gde.materialdefinition.fileStructure.leaves.InputMappingBlock;
-import com.jme3.gde.materialdefinition.fileStructure.leaves.LightModeBlock;
-import com.jme3.gde.materialdefinition.fileStructure.leaves.ShaderFileBlock;
-import com.jme3.gde.materialdefinition.fileStructure.leaves.UnsupportedStatement;
-import com.jme3.gde.materialdefinition.fileStructure.leaves.VertexShaderFileBlock;
-import com.jme3.gde.materialdefinition.fileStructure.leaves.WorldParamBlock;
-import com.jme3.util.blockparser.Statement;
-import java.beans.PropertyChangeListener;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import org.openide.util.WeakListeners;
-
-/**
- *
- * @author Nehon
- */
-public class TechniqueBlock extends UberStatement {
-
-    public static final String ADD_SHADER_NODE = "addShaderNode";
-    public static final String REMOVE_SHADER_NODE = "removeShaderNode";
-    public static final String ADD_WORLD_PARAM = "addWorldParam";
-    public static final String REMOVE_WORLD_PARAM = "removeWorldParam";
-    protected String name;
-    
-    private static final Logger logger = Logger.getLogger(TechniqueBlock.class.getName());
-
-    protected TechniqueBlock(int lineNumber, String line) {
-        super(lineNumber, line);
-    }
-
-    public TechniqueBlock(Statement sta) {
-        this(sta.getLineNumber(), sta.getLine());
-        for (Statement statement : sta.getContents()) {
-            if (statement.getLine().trim().startsWith("WorldParameters")) {
-                addStatement(new WorldParametersBlock(statement));
-            } else if (statement.getLine().trim().startsWith("LightMode")) {
-                addStatement(new LightModeBlock(statement));
-            } else if (statement.getLine().trim().startsWith("VertexShader ")) {
-                addStatement(new VertexShaderFileBlock(statement));
-            } else if (statement.getLine().trim().startsWith("FragmentShader ")) {
-                addStatement(new FragmentShaderFileBlock(statement));
-            } else if (statement.getLine().trim().startsWith("VertexShaderNodes")) {
-                addStatement(new VertexShaderNodesBlock(statement));
-            } else if (statement.getLine().trim().startsWith("FragmentShaderNodes")) {
-                addStatement(new FragmentShaderNodesBlock(statement));
-            } else if (statement.getLine().trim().startsWith("Defines")) {
-                addStatement(new DefinesBlock(statement));
-            } else {
-                addStatement(new UnsupportedStatement(statement));
-            }
-        }
-        String[] s = line.split("\\s");
-        if (s.length == 1) {
-            name = "Default";
-        } else {
-            name = s[1];
-        }
-    }
-    
-    public TechniqueBlock(String name){
-        super(0, "Technique "+name);        
-        this.name = name;                
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        String oldName = this.name;
-        this.name = name;
-        line = "Technique " + (name.equals("Default") ? "" : name);
-        fire("name", oldName, name);
-    }
-
-    public String getLightMode() {
-        LightModeBlock l = getBlock(LightModeBlock.class);
-        if (l == null) {
-            return null;
-        }
-        return l.getLightMode();
-    }
-
-    public void setLightMode(String lightMode) {
-        String oldLightMode = null;
-        LightModeBlock l = getBlock(LightModeBlock.class);
-        if (l == null) {
-            l = new LightModeBlock(lightMode);
-            addStatement(0, l);
-        } else {
-            oldLightMode = l.getLightMode();
-            l.setLightMode(lightMode);
-        }
-        fire("lightMode", oldLightMode, lightMode);
-    }
-
-    protected WorldParametersBlock getWorldParameters() {
-        return getBlock(WorldParametersBlock.class);
-    }
-
-    public List<WorldParamBlock> getWorldParams() {
-        WorldParametersBlock block = getWorldParameters();
-        if (block != null)
-            return getWorldParameters().getWorldParams();
-        else {
-            logger.log(Level.WARNING, "Unable to build ShaderNodes: Could not find any WorldParameters. Most likely the technique {0} is broken.", line);
-            return new ArrayList<WorldParamBlock>();
-        }
-    }
-
-    public void addWorldParam(WorldParamBlock block) {
-        WorldParametersBlock wpBlock = getBlock(WorldParametersBlock.class);
-        if (wpBlock == null) {
-            wpBlock = new WorldParametersBlock(0, "WorldParameters");
-            addStatement(0, wpBlock);
-        }
-        wpBlock.addWorldParam(block);
-        fire(ADD_WORLD_PARAM, null, block);
-    }
-
-    public void addVertexShaderNode(ShaderNodeBlock block) {
-        VertexShaderNodesBlock vblock = getBlock(VertexShaderNodesBlock.class);
-
-        if (vblock == null) {
-            vblock = new VertexShaderNodesBlock(0, "VertexShaderNodes ");
-            addStatement(0, vblock);
-        }
-        vblock.addShaderNode(block);
-        fire(ADD_SHADER_NODE, null, block);
-    }
-
-    public void addFragmentShaderNode(ShaderNodeBlock block) {
-        FragmentShaderNodesBlock fblock = getBlock(FragmentShaderNodesBlock.class);
-
-        if (fblock == null) {
-            fblock = new FragmentShaderNodesBlock(0, "FragmentShaderNodes ");
-            addStatement(0, fblock);
-        }
-        fblock.addShaderNode(block);
-        fire(ADD_SHADER_NODE, null, block);
-    }
-
-    public void removeShaderNode(ShaderNodeBlock block) {
-        VertexShaderNodesBlock vblock = getBlock(VertexShaderNodesBlock.class);
-        FragmentShaderNodesBlock fblock = getBlock(FragmentShaderNodesBlock.class);
-        boolean removed = false;
-        String eventToFire = null;
-        if (vblock != null) {
-            removed = vblock.removeShaderNode(block);
-            eventToFire = REMOVE_SHADER_NODE;
-        }
-        if (fblock != null) {
-            if (!removed) {
-                removed = fblock.removeShaderNode(block);
-                eventToFire = REMOVE_SHADER_NODE;
-            }
-        }
-
-        if (removed) {
-            cleanMappings(vblock, block);
-            cleanMappings(fblock, block);
-        }
-
-        if (eventToFire != null) {
-            fire(eventToFire, block, null);
-        }
-    }
-
-    public void removeWorldParam(WorldParamBlock worldParam) {
-        WorldParametersBlock wpBlock = getWorldParameters();
-        if (wpBlock == null) {
-            return;
-        }
-        wpBlock.removeWorldParam(worldParam);
-
-        VertexShaderNodesBlock vblock = getBlock(VertexShaderNodesBlock.class);
-        FragmentShaderNodesBlock fblock = getBlock(FragmentShaderNodesBlock.class);
-        cleanMappings(vblock, "WorldParam", worldParam.getName());
-        cleanMappings(fblock, "WorldParam", worldParam.getName());
-
-        fire(REMOVE_WORLD_PARAM, null, worldParam);
-    }
-
-    public List<ShaderNodeBlock> getShaderNodes() {
-        List<ShaderNodeBlock> list = new ArrayList<ShaderNodeBlock>();
-        
-        VertexShaderNodesBlock vert_block = getBlock(VertexShaderNodesBlock.class);
-        if (vert_block == null)
-            logger.log(Level.WARNING, "Unable to build ShaderNodes: Could not find any VertexShaderNode. Most likely the technique {0} is broken.", line);
-        else
-            list.addAll(vert_block.getShaderNodes());
-        
-        FragmentShaderNodesBlock frag_block = getBlock(FragmentShaderNodesBlock.class);
-        if (frag_block == null)
-            logger.log(Level.WARNING, "Unable to build ShaderNodes: Could not find any FragmentShaderNode. Most likely the technique {0} is broken.", line);
-        else
-            list.addAll(frag_block.getShaderNodes());
-        
-        return list;
-    }
-
-    public ShaderFileBlock getVertexShader() {
-        return getBlock(VertexShaderFileBlock.class);
-    }
-
-    public ShaderFileBlock getFragmentShader() {
-        return getBlock(FragmentShaderFileBlock.class);
-    }
-
-    @Override
-    public void addPropertyChangeListener(PropertyChangeListener pcl) {
-        super.addPropertyChangeListener(pcl);
-        VertexShaderNodesBlock vblock = getBlock(VertexShaderNodesBlock.class);
-        if (vblock != null) {
-            vblock.addPropertyChangeListener(WeakListeners.propertyChange(pcl, vblock));
-        }
-        FragmentShaderNodesBlock fblock = getBlock(FragmentShaderNodesBlock.class);
-        if (fblock != null) {
-            fblock.addPropertyChangeListener(WeakListeners.propertyChange(pcl, fblock));
-        }
-    }
-
-    private void cleanMappings(ShaderNodesBlock vblock, ShaderNodeBlock block) {
-        if (vblock != null) {
-            for (ShaderNodeBlock shaderNodeBlock : vblock.getShaderNodes()) {
-                List<InputMappingBlock> lInput = shaderNodeBlock.getInputs();
-                if (lInput != null) {
-                    for (InputMappingBlock inputMappingBlock : lInput) {
-                        if (inputMappingBlock.getRightNameSpace().equals(block.getName())) {
-                            shaderNodeBlock.removeInputMapping(inputMappingBlock);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    protected void cleanMappings(ShaderNodesBlock vblock, String nameSpace, String name) {
-        if (vblock != null) {
-            for (ShaderNodeBlock shaderNodeBlock : vblock.getShaderNodes()) {
-                List<InputMappingBlock> lInput = shaderNodeBlock.getInputs();
-                if (lInput != null) {
-                    for (InputMappingBlock inputMappingBlock : lInput) {
-                        if (inputMappingBlock.getRightNameSpace().equals(nameSpace) && inputMappingBlock.getRightVar().equals(name)) {
-                            shaderNodeBlock.removeInputMapping(inputMappingBlock);
-                        }
-                    }
-                }
-            }
-        }
-    }
-    
-    public void cleanupMappings(String nameSpace, String name) {
-        cleanMappings(getBlock(VertexShaderNodesBlock.class), nameSpace, name);
-        cleanMappings(getBlock(FragmentShaderNodesBlock.class), nameSpace, name);
-    }
-}
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.jme3.gde.materialdefinition.fileStructure;
+
+import com.jme3.gde.materialdefinition.fileStructure.leaves.FragmentShaderFileBlock;
+import com.jme3.gde.materialdefinition.fileStructure.leaves.InputMappingBlock;
+import com.jme3.gde.materialdefinition.fileStructure.leaves.LightModeBlock;
+import com.jme3.gde.materialdefinition.fileStructure.leaves.ShaderFileBlock;
+import com.jme3.gde.materialdefinition.fileStructure.leaves.UnsupportedStatement;
+import com.jme3.gde.materialdefinition.fileStructure.leaves.VertexShaderFileBlock;
+import com.jme3.gde.materialdefinition.fileStructure.leaves.WorldParamBlock;
+import com.jme3.util.blockparser.Statement;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.openide.util.WeakListeners;
+
+/**
+ *
+ * @author Nehon
+ */
+public class TechniqueBlock extends UberStatement {
+
+    public static final String ADD_SHADER_NODE = "addShaderNode";
+    public static final String REMOVE_SHADER_NODE = "removeShaderNode";
+    public static final String ADD_WORLD_PARAM = "addWorldParam";
+    public static final String REMOVE_WORLD_PARAM = "removeWorldParam";
+    protected String name;
+    
+    private static final Logger logger = Logger.getLogger(TechniqueBlock.class.getName());
+
+    protected TechniqueBlock(int lineNumber, String line) {
+        super(lineNumber, line);
+    }
+
+    public TechniqueBlock(Statement sta) {
+        this(sta.getLineNumber(), sta.getLine());
+        for (Statement statement : sta.getContents()) {
+            if (statement.getLine().trim().startsWith("WorldParameters")) {
+                addStatement(new WorldParametersBlock(statement));
+            } else if (statement.getLine().trim().startsWith("LightMode")) {
+                addStatement(new LightModeBlock(statement));
+            } else if (statement.getLine().trim().startsWith("VertexShader ")) {
+                addStatement(new VertexShaderFileBlock(statement));
+            } else if (statement.getLine().trim().startsWith("FragmentShader ")) {
+                addStatement(new FragmentShaderFileBlock(statement));
+            } else if (statement.getLine().trim().startsWith("VertexShaderNodes")) {
+                addStatement(new VertexShaderNodesBlock(statement));
+            } else if (statement.getLine().trim().startsWith("FragmentShaderNodes")) {
+                addStatement(new FragmentShaderNodesBlock(statement));
+            } else if (statement.getLine().trim().startsWith("Defines")) {
+                addStatement(new DefinesBlock(statement));
+            } else {
+                addStatement(new UnsupportedStatement(statement));
+            }
+        }
+        String[] s = line.split("\\s");
+        if (s.length == 1) {
+            name = "Default";
+        } else {
+            name = s[1];
+        }
+    }
+    
+    public TechniqueBlock(String name){
+        super(0, "Technique "+name);        
+        this.name = name;                
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        String oldName = this.name;
+        this.name = name;
+        line = "Technique " + (name.equals("Default") ? "" : name);
+        fire("name", oldName, name);
+    }
+
+    public String getLightMode() {
+        LightModeBlock l = getBlock(LightModeBlock.class);
+        if (l == null) {
+            return null;
+        }
+        return l.getLightMode();
+    }
+
+    public void setLightMode(String lightMode) {
+        String oldLightMode = null;
+        LightModeBlock l = getBlock(LightModeBlock.class);
+        if (l == null) {
+            l = new LightModeBlock(lightMode);
+            addStatement(0, l);
+        } else {
+            oldLightMode = l.getLightMode();
+            l.setLightMode(lightMode);
+        }
+        fire("lightMode", oldLightMode, lightMode);
+    }
+
+    protected WorldParametersBlock getWorldParameters() {
+        return getBlock(WorldParametersBlock.class);
+    }
+
+    public List<WorldParamBlock> getWorldParams() {
+        WorldParametersBlock block = getWorldParameters();
+        if (block != null)
+            return getWorldParameters().getWorldParams();
+        else {
+            logger.log(Level.WARNING, "Unable to build ShaderNodes: Could not find any WorldParameters. Most likely the technique {0} is broken.", line);
+            return new ArrayList<>();
+        }
+    }
+
+    public void addWorldParam(WorldParamBlock block) {
+        WorldParametersBlock wpBlock = getBlock(WorldParametersBlock.class);
+        if (wpBlock == null) {
+            wpBlock = new WorldParametersBlock(0, "WorldParameters");
+            addStatement(0, wpBlock);
+        }
+        wpBlock.addWorldParam(block);
+        fire(ADD_WORLD_PARAM, null, block);
+    }
+
+    public void addVertexShaderNode(ShaderNodeBlock block) {
+        VertexShaderNodesBlock vblock = getBlock(VertexShaderNodesBlock.class);
+
+        if (vblock == null) {
+            vblock = new VertexShaderNodesBlock(0, "VertexShaderNodes ");
+            addStatement(0, vblock);
+        }
+        vblock.addShaderNode(block);
+        fire(ADD_SHADER_NODE, null, block);
+    }
+
+    public void addFragmentShaderNode(ShaderNodeBlock block) {
+        FragmentShaderNodesBlock fblock = getBlock(FragmentShaderNodesBlock.class);
+
+        if (fblock == null) {
+            fblock = new FragmentShaderNodesBlock(0, "FragmentShaderNodes ");
+            addStatement(0, fblock);
+        }
+        fblock.addShaderNode(block);
+        fire(ADD_SHADER_NODE, null, block);
+    }
+
+    public void removeShaderNode(ShaderNodeBlock block) {
+        VertexShaderNodesBlock vblock = getBlock(VertexShaderNodesBlock.class);
+        FragmentShaderNodesBlock fblock = getBlock(FragmentShaderNodesBlock.class);
+        boolean removed = false;
+        String eventToFire = null;
+        if (vblock != null) {
+            removed = vblock.removeShaderNode(block);
+            eventToFire = REMOVE_SHADER_NODE;
+        }
+        if (fblock != null) {
+            if (!removed) {
+                removed = fblock.removeShaderNode(block);
+                eventToFire = REMOVE_SHADER_NODE;
+            }
+        }
+
+        if (removed) {
+            cleanMappings(vblock, block);
+            cleanMappings(fblock, block);
+        }
+
+        if (eventToFire != null) {
+            fire(eventToFire, block, null);
+        }
+    }
+
+    public void removeWorldParam(WorldParamBlock worldParam) {
+        WorldParametersBlock wpBlock = getWorldParameters();
+        if (wpBlock == null) {
+            return;
+        }
+        wpBlock.removeWorldParam(worldParam);
+
+        VertexShaderNodesBlock vblock = getBlock(VertexShaderNodesBlock.class);
+        FragmentShaderNodesBlock fblock = getBlock(FragmentShaderNodesBlock.class);
+        cleanMappings(vblock, "WorldParam", worldParam.getName());
+        cleanMappings(fblock, "WorldParam", worldParam.getName());
+
+        fire(REMOVE_WORLD_PARAM, null, worldParam);
+    }
+
+    public List<ShaderNodeBlock> getShaderNodes() {
+        List<ShaderNodeBlock> list = new ArrayList<>();
+        
+        VertexShaderNodesBlock vert_block = getBlock(VertexShaderNodesBlock.class);
+        if (vert_block == null)
+            logger.log(Level.WARNING, "Unable to build ShaderNodes: Could not find any VertexShaderNode. Most likely the technique {0} is broken.", line);
+        else
+            list.addAll(vert_block.getShaderNodes());
+        
+        FragmentShaderNodesBlock frag_block = getBlock(FragmentShaderNodesBlock.class);
+        if (frag_block == null)
+            logger.log(Level.WARNING, "Unable to build ShaderNodes: Could not find any FragmentShaderNode. Most likely the technique {0} is broken.", line);
+        else
+            list.addAll(frag_block.getShaderNodes());
+        
+        return list;
+    }
+
+    public ShaderFileBlock getVertexShader() {
+        return getBlock(VertexShaderFileBlock.class);
+    }
+
+    public ShaderFileBlock getFragmentShader() {
+        return getBlock(FragmentShaderFileBlock.class);
+    }
+
+    @Override
+    public void addPropertyChangeListener(PropertyChangeListener pcl) {
+        super.addPropertyChangeListener(pcl);
+        VertexShaderNodesBlock vblock = getBlock(VertexShaderNodesBlock.class);
+        if (vblock != null) {
+            vblock.addPropertyChangeListener(WeakListeners.propertyChange(pcl, vblock));
+        }
+        FragmentShaderNodesBlock fblock = getBlock(FragmentShaderNodesBlock.class);
+        if (fblock != null) {
+            fblock.addPropertyChangeListener(WeakListeners.propertyChange(pcl, fblock));
+        }
+    }
+
+    private void cleanMappings(ShaderNodesBlock vblock, ShaderNodeBlock block) {
+        if (vblock != null) {
+            for (ShaderNodeBlock shaderNodeBlock : vblock.getShaderNodes()) {
+                List<InputMappingBlock> lInput = shaderNodeBlock.getInputs();
+                if (lInput != null) {
+                    for (InputMappingBlock inputMappingBlock : lInput) {
+                        if (inputMappingBlock.getRightNameSpace().equals(block.getName())) {
+                            shaderNodeBlock.removeInputMapping(inputMappingBlock);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    protected void cleanMappings(ShaderNodesBlock vblock, String nameSpace, String name) {
+        if (vblock != null) {
+            for (ShaderNodeBlock shaderNodeBlock : vblock.getShaderNodes()) {
+                List<InputMappingBlock> lInput = shaderNodeBlock.getInputs();
+                if (lInput != null) {
+                    for (InputMappingBlock inputMappingBlock : lInput) {
+                        if (inputMappingBlock.getRightNameSpace().equals(nameSpace) && inputMappingBlock.getRightVar().equals(name)) {
+                            shaderNodeBlock.removeInputMapping(inputMappingBlock);
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    public void cleanupMappings(String nameSpace, String name) {
+        cleanMappings(getBlock(VertexShaderNodesBlock.class), nameSpace, name);
+        cleanMappings(getBlock(FragmentShaderNodesBlock.class), nameSpace, name);
+    }
+}

+ 44 - 43
jme3-materialeditor/src/com/jme3/gde/materialdefinition/fileStructure/leaves/LeafStatement.java

@@ -1,43 +1,44 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-package com.jme3.gde.materialdefinition.fileStructure.leaves;
-
-import com.jme3.util.blockparser.Statement;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * A statement that will not be decorated
- * @author Nehon
- */
-@SuppressWarnings({"unchecked", "rawtypes"})
-public class LeafStatement extends Statement {
-
-    private List listeners = Collections.synchronizedList(new LinkedList());
-
-    public void addPropertyChangeListener(PropertyChangeListener pcl) {
-        listeners.add(pcl);
-    }
-
-    public void removePropertyChangeListener(PropertyChangeListener pcl) {
-        listeners.remove(pcl);
-    }
-
-    protected void fire(String propertyName, Object old, Object nue) {
-        //Passing 0 below on purpose, so you only synchronize for one atomic call:
-        PropertyChangeListener[] pcls = (PropertyChangeListener[]) listeners.toArray(new PropertyChangeListener[0]);
-        for (int i = 0; i < pcls.length; i++) {
-            pcls[i].propertyChange(new PropertyChangeEvent(this, propertyName, old, nue));
-        }
-    }
-
-    public LeafStatement(int lineNumber, String line) {
-        super(lineNumber, line);
-        contents = null;
-    }
-}
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.jme3.gde.materialdefinition.fileStructure.leaves;
+
+import com.jme3.util.blockparser.Statement;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * A statement that will not be decorated.
+ * 
+ * @author Nehon
+ */
+@SuppressWarnings({"unchecked", "rawtypes"})
+public class LeafStatement extends Statement {
+
+    private final List listeners = Collections.synchronizedList(new LinkedList());
+
+    public void addPropertyChangeListener(PropertyChangeListener pcl) {
+        listeners.add(pcl);
+    }
+
+    public void removePropertyChangeListener(PropertyChangeListener pcl) {
+        listeners.remove(pcl);
+    }
+
+    protected void fire(String propertyName, Object old, Object nue) {
+        //Passing 0 below on purpose, so you only synchronize for one atomic call:
+        PropertyChangeListener[] pcls = (PropertyChangeListener[]) listeners.toArray(new PropertyChangeListener[0]);
+        for (PropertyChangeListener pcl : pcls) {
+            pcl.propertyChange(new PropertyChangeEvent(this, propertyName, old, nue));
+        }
+    }
+
+    public LeafStatement(int lineNumber, String line) {
+        super(lineNumber, line);
+        contents = null;
+    }
+}