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) {
|
||||
int i = 0;
|
||||
for (ShaderNodeDefinition def : defList) {
|
||||
ShaderNodeBlock sn = new ShaderNodeBlock(def, path);
|
||||
sn.setName(fixNodeName(sn.getName()));
|
||||
|
||||
NodePanel np = new NodePanel(sn, def);
|
||||
addNode(np);
|
||||
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.InputMappingBlock;
|
||||
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.UnsupportedStatement;
|
||||
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.materialdefinition.MatDefDataObject;
|
||||
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.TechniqueBlock;
|
||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.MappingBlock;
|
||||
import com.jme3.gde.materialdefinition.icons.Icons;
|
||||
import com.jme3.gde.materialdefinition.navigator.node.properties.DefaultProperty;
|
||||
@ -17,6 +19,7 @@ import com.jme3.shader.ShaderNodeDefinition;
|
||||
import java.awt.Image;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.openide.nodes.Children;
|
||||
@ -36,7 +39,6 @@ public class ShaderNodeNode extends AbstractMatDefNode implements Selectable, Pr
|
||||
ShaderNodeDefinition def;
|
||||
String key = "";
|
||||
|
||||
|
||||
public ShaderNodeNode(final Lookup lookup, final ShaderNodeBlock shaderNode) {
|
||||
// super(Children.create(new ChildFactory<MappingBlock>() {
|
||||
// @Override
|
||||
@ -78,7 +80,17 @@ public class ShaderNodeNode extends AbstractMatDefNode implements Selectable, Pr
|
||||
set.setDisplayName(shaderNode.getName() + " ShaderNode");
|
||||
set.setShortDescription(def.getDocumentation());
|
||||
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"));
|
||||
|
||||
} catch (NoSuchMethodException ex) {
|
||||
@ -91,8 +103,21 @@ public class ShaderNodeNode extends AbstractMatDefNode implements Selectable, Pr
|
||||
sheet.put(set);
|
||||
|
||||
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
|
||||
|
@ -56,6 +56,10 @@ public class TechniqueNode extends AbstractMatDefNode implements Selectable, Pro
|
||||
|
||||
}
|
||||
|
||||
protected TechniqueBlock getDef() {
|
||||
return def;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Image getIcon(int type) {
|
||||
return Icons.tech.getImage();
|
||||
|
Loading…
x
Reference in New Issue
Block a user