SDK mat def editor : proof checks on node naming
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10454 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
67d5628721
commit
845b14c4f0
@ -175,10 +175,25 @@ public class Diagram extends JPanel implements MouseListener, MouseMotionListene
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String fixNodeName(String name) {
|
||||||
|
return fixNodeName(name, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String fixNodeName(String name, int count) {
|
||||||
|
for (NodePanel nodePanel : nodes) {
|
||||||
|
if ((name + (count == 0 ? "" : count)).equals(nodePanel.getName())) {
|
||||||
|
return fixNodeName(name, count + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return name + (count == 0 ? "" : count);
|
||||||
|
}
|
||||||
|
|
||||||
public void addNodesFromDefs(List<ShaderNodeDefinition> defList, String path, Point clickPosition) {
|
public void addNodesFromDefs(List<ShaderNodeDefinition> defList, String path, Point clickPosition) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (ShaderNodeDefinition def : defList) {
|
for (ShaderNodeDefinition def : defList) {
|
||||||
ShaderNodeBlock sn = new ShaderNodeBlock(def, path);
|
ShaderNodeBlock sn = new ShaderNodeBlock(def, path);
|
||||||
|
sn.setName(fixNodeName(sn.getName()));
|
||||||
|
|
||||||
NodePanel np = new NodePanel(sn, def);
|
NodePanel np = new NodePanel(sn, def);
|
||||||
addNode(np);
|
addNode(np);
|
||||||
np.setLocation(clickPosition.x + i * 150, clickPosition.y);
|
np.setLocation(clickPosition.x + i * 150, clickPosition.y);
|
||||||
|
@ -7,7 +7,6 @@ package com.jme3.gde.materialdefinition.fileStructure;
|
|||||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.FragmentShaderFileBlock;
|
import com.jme3.gde.materialdefinition.fileStructure.leaves.FragmentShaderFileBlock;
|
||||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.InputMappingBlock;
|
import com.jme3.gde.materialdefinition.fileStructure.leaves.InputMappingBlock;
|
||||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.LightModeBlock;
|
import com.jme3.gde.materialdefinition.fileStructure.leaves.LightModeBlock;
|
||||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.MatParamBlock;
|
|
||||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.ShaderFileBlock;
|
import com.jme3.gde.materialdefinition.fileStructure.leaves.ShaderFileBlock;
|
||||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.UnsupportedStatement;
|
import com.jme3.gde.materialdefinition.fileStructure.leaves.UnsupportedStatement;
|
||||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.VertexShaderFileBlock;
|
import com.jme3.gde.materialdefinition.fileStructure.leaves.VertexShaderFileBlock;
|
||||||
|
@ -7,7 +7,9 @@ package com.jme3.gde.materialdefinition.navigator.node;
|
|||||||
import com.jme3.gde.core.assets.ProjectAssetManager;
|
import com.jme3.gde.core.assets.ProjectAssetManager;
|
||||||
import com.jme3.gde.materialdefinition.MatDefDataObject;
|
import com.jme3.gde.materialdefinition.MatDefDataObject;
|
||||||
import com.jme3.gde.materialdefinition.editor.Selectable;
|
import com.jme3.gde.materialdefinition.editor.Selectable;
|
||||||
|
import com.jme3.gde.materialdefinition.fileStructure.MatDefBlock;
|
||||||
import com.jme3.gde.materialdefinition.fileStructure.ShaderNodeBlock;
|
import com.jme3.gde.materialdefinition.fileStructure.ShaderNodeBlock;
|
||||||
|
import com.jme3.gde.materialdefinition.fileStructure.TechniqueBlock;
|
||||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.MappingBlock;
|
import com.jme3.gde.materialdefinition.fileStructure.leaves.MappingBlock;
|
||||||
import com.jme3.gde.materialdefinition.icons.Icons;
|
import com.jme3.gde.materialdefinition.icons.Icons;
|
||||||
import com.jme3.gde.materialdefinition.navigator.node.properties.DefaultProperty;
|
import com.jme3.gde.materialdefinition.navigator.node.properties.DefaultProperty;
|
||||||
@ -17,6 +19,7 @@ import com.jme3.shader.ShaderNodeDefinition;
|
|||||||
import java.awt.Image;
|
import java.awt.Image;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
@ -36,7 +39,6 @@ public class ShaderNodeNode extends AbstractMatDefNode implements Selectable, Pr
|
|||||||
ShaderNodeDefinition def;
|
ShaderNodeDefinition def;
|
||||||
String key = "";
|
String key = "";
|
||||||
|
|
||||||
|
|
||||||
public ShaderNodeNode(final Lookup lookup, final ShaderNodeBlock shaderNode) {
|
public ShaderNodeNode(final Lookup lookup, final ShaderNodeBlock shaderNode) {
|
||||||
// super(Children.create(new ChildFactory<MappingBlock>() {
|
// super(Children.create(new ChildFactory<MappingBlock>() {
|
||||||
// @Override
|
// @Override
|
||||||
@ -78,7 +80,17 @@ public class ShaderNodeNode extends AbstractMatDefNode implements Selectable, Pr
|
|||||||
set.setDisplayName(shaderNode.getName() + " ShaderNode");
|
set.setDisplayName(shaderNode.getName() + " ShaderNode");
|
||||||
set.setShortDescription(def.getDocumentation());
|
set.setShortDescription(def.getDocumentation());
|
||||||
try {
|
try {
|
||||||
set.put(new DefaultProperty<String>(shaderNode, String.class, "Name", "getName", "setName"));
|
set.put(new DefaultProperty<String>(shaderNode, String.class, "Name", "getName", "setName") {
|
||||||
|
@Override
|
||||||
|
public void setValue(String val) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
|
||||||
|
val = fixNodeName(val);
|
||||||
|
//glsl variable can't start with a number
|
||||||
|
if(val.matches("^\\d.*")){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
super.setValue(val);
|
||||||
|
}
|
||||||
|
});
|
||||||
set.put(new DefaultProperty<String>(shaderNode, String.class, "Condition", "getCondition", "setCondition"));
|
set.put(new DefaultProperty<String>(shaderNode, String.class, "Condition", "getCondition", "setCondition"));
|
||||||
|
|
||||||
} catch (NoSuchMethodException ex) {
|
} catch (NoSuchMethodException ex) {
|
||||||
@ -91,8 +103,21 @@ public class ShaderNodeNode extends AbstractMatDefNode implements Selectable, Pr
|
|||||||
sheet.put(set);
|
sheet.put(set);
|
||||||
|
|
||||||
return sheet;
|
return sheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String fixNodeName(String name) {
|
||||||
|
TechniqueBlock tech = ((TechniqueNode) this.getParentNode()).getDef();
|
||||||
|
List<ShaderNodeBlock> list = tech.getShaderNodes();
|
||||||
|
return fixNodeName(list, name, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String fixNodeName(List<ShaderNodeBlock> nodes, String name, int count) {
|
||||||
|
for (ShaderNodeBlock nodePanel : nodes) {
|
||||||
|
if ((name + (count == 0 ? "" : count)).equals(nodePanel.getName())) {
|
||||||
|
return fixNodeName(nodes, name, count + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return name + (count == 0 ? "" : count);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -56,6 +56,10 @@ public class TechniqueNode extends AbstractMatDefNode implements Selectable, Pro
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected TechniqueBlock getDef() {
|
||||||
|
return def;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Image getIcon(int type) {
|
public Image getIcon(int type) {
|
||||||
return Icons.tech.getImage();
|
return Icons.tech.getImage();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user