One can now select the technique in the shader node editor through a combo box in the tool bar
This commit is contained in:
parent
1286fa0fba
commit
ff877160e8
sdk/jme3-materialeditor/src/com/jme3/gde
materialdefinition
EditableMatDefFile.java
editor
Bundle.propertiesDiagram.javaMatDefEditorToolBar.formMatDefEditorToolBar.javaMatDefEditorlElement.javaOutBusPanel.java
navigator/node
shadervisual
materials
@ -61,12 +61,9 @@ public class EditableMatDefFile {
|
||||
private TechniqueBlock currentTechnique;
|
||||
private MaterialDef materialDef;
|
||||
private ProjectAssetManager assetManager;
|
||||
// MatParamTopComponent matParamComponent;
|
||||
private ShaderGenerator glsl100;
|
||||
private ShaderGenerator glsl150;
|
||||
private final String selectedTechnique = "Default";
|
||||
private final static String GLSL100 = "GLSL100";
|
||||
private final static String GLSL150 = "GLSL150";
|
||||
private Lookup lookup;
|
||||
private boolean loaded = false;
|
||||
private boolean dirty = false;
|
||||
@ -137,7 +134,9 @@ public class EditableMatDefFile {
|
||||
}
|
||||
}
|
||||
if (materialDef != null && !matParseError) {
|
||||
if(currentTechnique == null){
|
||||
currentTechnique = matDefStructure.getTechniques().get(0);
|
||||
}
|
||||
registerListener(matDefStructure);
|
||||
|
||||
obj.getLookupContents().add(matDefStructure);
|
||||
@ -170,7 +169,7 @@ public class EditableMatDefFile {
|
||||
|
||||
public String getShaderCode(String version, Shader.ShaderType type) {
|
||||
try {
|
||||
material.selectTechnique("Default", SceneApplication.getApplication().getRenderManager());
|
||||
material.selectTechnique(currentTechnique.getName(), SceneApplication.getApplication().getRenderManager());
|
||||
Shader s;
|
||||
if (version.equals(GLSL100)) {
|
||||
glsl100.initialize(material.getActiveTechnique());
|
||||
@ -195,6 +194,10 @@ public class EditableMatDefFile {
|
||||
return currentTechnique;
|
||||
}
|
||||
|
||||
public void setCurrentTechnique(TechniqueBlock tech){
|
||||
this.currentTechnique = tech;
|
||||
}
|
||||
|
||||
public MatDefBlock getMatDefStructure() {
|
||||
return matDefStructure;
|
||||
}
|
||||
|
@ -12,3 +12,4 @@ BackdropPanel.bringToFrontButton.toolTipText=Toggle back/front
|
||||
NodeToolBar.codeButton.toolTipText=Display code
|
||||
NodeToolBar.deleteButton.toolTipText=Delete node
|
||||
NodeToolBar.deleteButton.text=
|
||||
MatDefEditorToolBar.jLabel1.text=Technique
|
||||
|
@ -5,6 +5,7 @@
|
||||
package com.jme3.gde.materialdefinition.editor;
|
||||
|
||||
import com.jme3.gde.core.assets.ProjectAssetManager;
|
||||
import com.jme3.gde.core.scene.SceneApplication;
|
||||
import com.jme3.gde.materialdefinition.dialog.AddAttributeDialog;
|
||||
import com.jme3.gde.materialdefinition.dialog.AddMaterialParameterDialog;
|
||||
import com.jme3.gde.materialdefinition.dialog.AddNodeDialog;
|
||||
|
66
sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatDefEditorToolBar.form
Normal file
66
sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatDefEditorToolBar.form
Normal file
@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||
<Properties>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[474, 25]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="jLabel1" min="-2" pref="71" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="techniqueComboBox" min="-2" pref="136" max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="337" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="103" alignment="0" groupAlignment="3" attributes="0">
|
||||
<Component id="jLabel1" alignment="3" pref="25" max="32767" attributes="0"/>
|
||||
<Component id="techniqueComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
</Layout>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JLabel" name="jLabel1">
|
||||
<Properties>
|
||||
<Property name="horizontalAlignment" type="int" value="11"/>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="com/jme3/gde/materialdefinition/editor/Bundle.properties" key="MatDefEditorToolBar.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JComboBox" name="techniqueComboBox">
|
||||
<Properties>
|
||||
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
|
||||
<StringArray count="4">
|
||||
<StringItem index="0" value="Item 1"/>
|
||||
<StringItem index="1" value="Item 2"/>
|
||||
<StringItem index="2" value="Item 3"/>
|
||||
<StringItem index="3" value="Item 4"/>
|
||||
</StringArray>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="techniqueComboBoxActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Form>
|
105
sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatDefEditorToolBar.java
Normal file
105
sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/editor/MatDefEditorToolBar.java
Normal file
@ -0,0 +1,105 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package com.jme3.gde.materialdefinition.editor;
|
||||
|
||||
import com.jme3.gde.materialdefinition.fileStructure.TechniqueBlock;
|
||||
import java.awt.Component;
|
||||
import java.util.List;
|
||||
import javax.swing.DefaultComboBoxModel;
|
||||
import javax.swing.DefaultListCellRenderer;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.ListCellRenderer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Nehon
|
||||
*/
|
||||
public class MatDefEditorToolBar extends javax.swing.JPanel {
|
||||
|
||||
private MatDefEditorlElement parent;
|
||||
private final DefaultComboBoxModel<TechniqueBlock> comboModel = new DefaultComboBoxModel<TechniqueBlock>();
|
||||
/**
|
||||
* Creates new form MatDefEditorToolBar
|
||||
*/
|
||||
public MatDefEditorToolBar() {
|
||||
initComponents();
|
||||
techniqueComboBox.setModel(comboModel);
|
||||
final DefaultListCellRenderer renderer = new DefaultListCellRenderer();
|
||||
techniqueComboBox.setRenderer(new ListCellRenderer<TechniqueBlock>() {
|
||||
|
||||
public Component getListCellRendererComponent(JList list, TechniqueBlock value, int index, boolean isSelected, boolean cellHasFocus) {
|
||||
JLabel c = (JLabel)renderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
||||
c.setText(value.getName());
|
||||
return c;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void setParent(MatDefEditorlElement parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
public void addTechnique(List<TechniqueBlock> tech){
|
||||
for (TechniqueBlock tech1 : tech) {
|
||||
comboModel.addElement(tech1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called from within the constructor to initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is always
|
||||
* regenerated by the Form Editor.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
jLabel1 = new javax.swing.JLabel();
|
||||
techniqueComboBox = new javax.swing.JComboBox();
|
||||
|
||||
setPreferredSize(new java.awt.Dimension(474, 25));
|
||||
|
||||
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
|
||||
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(MatDefEditorToolBar.class, "MatDefEditorToolBar.jLabel1.text")); // NOI18N
|
||||
|
||||
techniqueComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
|
||||
techniqueComboBox.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
techniqueComboBoxActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(techniqueComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(0, 337, Short.MAX_VALUE))
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
|
||||
.addComponent(techniqueComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void techniqueComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_techniqueComboBoxActionPerformed
|
||||
parent.switchTechnique((TechniqueBlock)techniqueComboBox.getSelectedItem());
|
||||
}//GEN-LAST:event_techniqueComboBoxActionPerformed
|
||||
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JLabel jLabel1;
|
||||
private javax.swing.JComboBox techniqueComboBox;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
@ -32,6 +32,7 @@
|
||||
package com.jme3.gde.materialdefinition.editor;
|
||||
|
||||
import com.jme3.gde.core.assets.ProjectAssetManager;
|
||||
import com.jme3.gde.core.scene.SceneApplication;
|
||||
import com.jme3.gde.materialdefinition.EditableMatDefFile;
|
||||
import com.jme3.gde.materialdefinition.MatDefDataObject;
|
||||
import com.jme3.gde.materialdefinition.MatDefMetaData;
|
||||
@ -44,6 +45,7 @@ import com.jme3.gde.materialdefinition.fileStructure.leaves.MatParamBlock;
|
||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.OutputMappingBlock;
|
||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.WorldParamBlock;
|
||||
import com.jme3.gde.materialdefinition.navigator.MatDefNavigatorPanel;
|
||||
import com.jme3.gde.materialdefinition.shadervisual.MatDefShaderElement;
|
||||
import com.jme3.gde.materialdefinition.utils.MaterialUtils;
|
||||
import com.jme3.material.Material;
|
||||
import com.jme3.shader.Shader;
|
||||
@ -69,7 +71,6 @@ import javax.swing.Action;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JToolBar;
|
||||
import org.netbeans.core.spi.multiview.CloseOperationState;
|
||||
import org.netbeans.core.spi.multiview.MultiViewElement;
|
||||
import org.netbeans.core.spi.multiview.MultiViewElementCallback;
|
||||
@ -80,7 +81,6 @@ import org.openide.filesystems.FileObject;
|
||||
import org.openide.filesystems.FileUtil;
|
||||
import org.openide.nodes.Children;
|
||||
import org.openide.nodes.Node;
|
||||
import org.openide.text.EditorSupport;
|
||||
import org.openide.util.Exceptions;
|
||||
import org.openide.util.Lookup;
|
||||
import org.openide.util.LookupEvent;
|
||||
@ -101,12 +101,13 @@ import org.openide.windows.TopComponent;
|
||||
public final class MatDefEditorlElement extends JPanel implements MultiViewElement {
|
||||
|
||||
protected MatDefDataObject obj;
|
||||
private JToolBar toolbar = new JToolBar();
|
||||
private final MatDefEditorToolBar toolbar = new MatDefEditorToolBar();
|
||||
private transient MultiViewElementCallback callback;
|
||||
InstanceContent content;
|
||||
Selectable prevNode;
|
||||
MatDefMetaData metaData;
|
||||
|
||||
@SuppressWarnings("LeakingThisInConstructor")
|
||||
public MatDefEditorlElement(final Lookup lkp) {
|
||||
initComponents();
|
||||
obj = lkp.lookup(MatDefDataObject.class);
|
||||
@ -115,6 +116,8 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
final EditableMatDefFile file = obj.getEditableFile();
|
||||
shaderEditPanel1.setVisible(false);
|
||||
shaderEditPanel1.setParent(this);
|
||||
toolbar.setParent(this);
|
||||
toolbar.addTechnique(lkp.lookup(MatDefBlock.class).getTechniques());
|
||||
reload(file, lkp);
|
||||
}
|
||||
|
||||
@ -127,7 +130,7 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
|
||||
ProjectAssetManager manager = obj.getLookup().lookup(ProjectAssetManager.class);
|
||||
final MatDefBlock matDef = obj.getLookup().lookup(MatDefBlock.class);
|
||||
TechniqueBlock technique = getTechnique(matDef);
|
||||
TechniqueBlock technique = getTechnique();
|
||||
|
||||
diagram1.setCurrentTechniqueName(technique.getName());
|
||||
|
||||
@ -219,6 +222,7 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
diagram1.revalidate();
|
||||
jScrollPane1.addComponentListener(diagram1);
|
||||
|
||||
mat.selectTechnique(obj.getEditableFile().getCurrentTechnique().getName(), SceneApplication.getApplication().getRenderManager());
|
||||
diagram1.refreshPreviews(mat);
|
||||
final Lookup.Result<Material> resMat = obj.getLookup().lookupResult(Material.class);
|
||||
resMat.addLookupListener(new LookupListener() {
|
||||
@ -226,6 +230,7 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
Collection<? extends Material> col = (Collection<? extends Material>) resMat.allInstances();
|
||||
if (!col.isEmpty()) {
|
||||
Material material = col.iterator().next();
|
||||
material.selectTechnique(obj.getEditableFile().getCurrentTechnique().getName(), SceneApplication.getApplication().getRenderManager());
|
||||
diagram1.refreshPreviews(material);
|
||||
}
|
||||
}
|
||||
@ -247,6 +252,11 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
}
|
||||
}
|
||||
|
||||
public void switchTechnique(TechniqueBlock tech) {
|
||||
obj.getEditableFile().setCurrentTechnique(tech);
|
||||
reload(obj.getEditableFile(), obj.getLookup());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "MatDefVisualElement";
|
||||
@ -278,6 +288,7 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
Collection<? extends Material> col = (Collection<? extends Material>) resMat.allInstances();
|
||||
if (!col.isEmpty()) {
|
||||
Material material = col.iterator().next();
|
||||
material.selectTechnique(obj.getEditableFile().getCurrentTechnique().getName(), SceneApplication.getApplication().getRenderManager());
|
||||
diagram1.refreshPreviews(material);
|
||||
}
|
||||
|
||||
@ -510,8 +521,7 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
}
|
||||
|
||||
public void notifyAddNode(ShaderNodeBlock node, ShaderNodeDefinition def) {
|
||||
MatDefBlock matDef = obj.getLookup().lookup(MatDefBlock.class);
|
||||
TechniqueBlock technique = getTechnique(matDef);
|
||||
TechniqueBlock technique = getTechnique();
|
||||
if (def.getType() == Shader.ShaderType.Vertex) {
|
||||
technique.addVertexShaderNode(node);
|
||||
} else if (def.getType() == Shader.ShaderType.Fragment) {
|
||||
@ -526,15 +536,14 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
}
|
||||
|
||||
public void notifyAddWorldParam(String name) {
|
||||
MatDefBlock matDef = obj.getLookup().lookup(MatDefBlock.class);
|
||||
WorldParamBlock param = new WorldParamBlock(name);
|
||||
getTechnique(matDef).addWorldParam(param);
|
||||
getTechnique().addWorldParam(param);
|
||||
}
|
||||
|
||||
public void notifyRemoveNode(NodePanel node) {
|
||||
MatDefBlock matDef = obj.getLookup().lookup(MatDefBlock.class);
|
||||
if (node.getType() == NodePanel.NodeType.Fragment || node.getType() == NodePanel.NodeType.Vertex) {
|
||||
TechniqueBlock technique = getTechnique(matDef);
|
||||
TechniqueBlock technique = getTechnique();
|
||||
for (ShaderNodeBlock shaderNodeBlock : technique.getShaderNodes()) {
|
||||
if (shaderNodeBlock.getName().equals(node.getName())) {
|
||||
technique.removeShaderNode(shaderNodeBlock);
|
||||
@ -543,9 +552,9 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
} else if (node.getType() == NodePanel.NodeType.MatParam) {
|
||||
matDef.removeMatParam(new MatParamBlock("", node.getKey().replaceAll("MatParam.", ""), "", ""));
|
||||
} else if (node.getType() == NodePanel.NodeType.WorldParam) {
|
||||
getTechnique(matDef).removeWorldParam(new WorldParamBlock(node.getKey().replaceAll("WorldParam.", "")));
|
||||
getTechnique().removeWorldParam(new WorldParamBlock(node.getKey().replaceAll("WorldParam.", "")));
|
||||
} else if (node.getType() == NodePanel.NodeType.Attribute) {
|
||||
getTechnique(matDef).cleanupMappings("Attr", node.getKey().replaceAll("Attr.", ""));
|
||||
getTechnique().cleanupMappings("Attr", node.getKey().replaceAll("Attr.", ""));
|
||||
}
|
||||
}
|
||||
|
||||
@ -634,8 +643,8 @@ public final class MatDefEditorlElement extends JPanel implements MultiViewEleme
|
||||
|
||||
}
|
||||
|
||||
private TechniqueBlock getTechnique(MatDefBlock matDef) {
|
||||
TechniqueBlock technique = matDef.getTechniques().get(0);
|
||||
private TechniqueBlock getTechnique() {
|
||||
TechniqueBlock technique = obj.getEditableFile().getCurrentTechnique();
|
||||
return technique;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
*/
|
||||
package com.jme3.gde.materialdefinition.editor;
|
||||
|
||||
import com.jme3.gde.core.scene.SceneApplication;
|
||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.InputMappingBlock;
|
||||
import com.jme3.gde.materialdefinition.fileStructure.leaves.OutputMappingBlock;
|
||||
import com.jme3.material.Material;
|
||||
@ -183,6 +184,7 @@ public class OutBusPanel extends DraggablePanel implements ComponentListener, Se
|
||||
preview.showMaterial(mat);
|
||||
} else {
|
||||
Material vmat = mat.clone();
|
||||
vmat.selectTechnique(mat.getActiveTechnique().getDef().getName(), SceneApplication.getApplication().getRenderManager());
|
||||
vmat.getAdditionalRenderState().setWireframe(true);
|
||||
preview.showMaterial(vmat);
|
||||
}
|
||||
|
@ -38,26 +38,11 @@ public class ShaderNodeNode extends AbstractMatDefNode implements Selectable, Pr
|
||||
ShaderNodeBlock shaderNode;
|
||||
ShaderNodeDefinition def;
|
||||
String key = "";
|
||||
String techName = "";
|
||||
|
||||
public ShaderNodeNode(final Lookup lookup, final ShaderNodeBlock shaderNode) {
|
||||
// super(Children.create(new ChildFactory<MappingBlock>() {
|
||||
// @Override
|
||||
// protected boolean createKeys(List<MappingBlock> list) {
|
||||
// list.addAll(shaderNode.getInputs());
|
||||
// List<OutputMappingBlock> out = shaderNode.getOutputs();
|
||||
// if (out != null) {
|
||||
// list.addAll(shaderNode.getOutputs());
|
||||
// }
|
||||
//
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// protected Node createNodeForKey(MappingBlock key) {
|
||||
// return new MappingNode(lookup, key);
|
||||
// }
|
||||
// }, true), lookup);
|
||||
public ShaderNodeNode(final Lookup lookup, final ShaderNodeBlock shaderNode, final String techName) {
|
||||
super(new MappingNodeChildren(lookup, shaderNode), lookup);
|
||||
this.techName = techName;
|
||||
this.shaderNode = shaderNode;
|
||||
setName(shaderNode.getName());
|
||||
key = makeKey();
|
||||
@ -139,8 +124,7 @@ public class ShaderNodeNode extends AbstractMatDefNode implements Selectable, Pr
|
||||
}
|
||||
|
||||
private String makeKey() {
|
||||
String defName = lookup.lookup(MatDefDataObject.class).getEditableFile().getCurrentTechnique().getName();
|
||||
return defName + "/" + getName();
|
||||
return techName + "/" + getName();
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
|
@ -56,7 +56,7 @@ public class TechniqueNode extends AbstractMatDefNode implements Selectable, Pro
|
||||
|
||||
}
|
||||
|
||||
protected TechniqueBlock getDef() {
|
||||
public TechniqueBlock getDef() {
|
||||
return def;
|
||||
}
|
||||
|
||||
@ -116,7 +116,7 @@ public class TechniqueNode extends AbstractMatDefNode implements Selectable, Pro
|
||||
|
||||
@Override
|
||||
protected Node[] createNodes(ShaderNodeBlock key) {
|
||||
return new Node[]{new ShaderNodeNode(lookup, key)};
|
||||
return new Node[]{new ShaderNodeNode(lookup, key, def.getName())};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,12 +31,9 @@
|
||||
*/
|
||||
package com.jme3.gde.materialdefinition.shadervisual;
|
||||
|
||||
import com.jme3.gde.core.assets.ProjectAssetManager;
|
||||
import com.jme3.gde.materialdefinition.EditableMatDefFile;
|
||||
import com.jme3.gde.materialdefinition.MatDefDataObject;
|
||||
import javax.swing.Action;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JEditorPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.text.EditorKit;
|
||||
import org.netbeans.core.spi.multiview.CloseOperationState;
|
||||
@ -58,10 +55,11 @@ position = 3000)
|
||||
@Messages("LBL_MatDef_SHADER=Shader")
|
||||
public final class MatDefShaderElement extends JPanel implements MultiViewElement {
|
||||
|
||||
private MatDefDataObject obj;
|
||||
private ShaderVisualToolBar toolbar = new ShaderVisualToolBar();
|
||||
private final MatDefDataObject obj;
|
||||
private final ShaderVisualToolBar toolbar = new ShaderVisualToolBar();
|
||||
private transient MultiViewElementCallback callback;
|
||||
|
||||
@SuppressWarnings("LeakingThisInConstructor")
|
||||
public MatDefShaderElement(Lookup lkp) {
|
||||
obj = lkp.lookup(MatDefDataObject.class);
|
||||
assert obj != null;
|
||||
|
@ -147,7 +147,7 @@ public class MaterialPreviewRenderer implements SceneListener {
|
||||
for (MatParam matParam : mat.getParams()) {
|
||||
dummy.setParam(matParam.getName(), matParam.getVarType(), matParam.getValue());
|
||||
}
|
||||
|
||||
dummy.selectTechnique(mat.getActiveTechnique().getDef().getName(), SceneApplication.getApplication().getRenderManager());
|
||||
dummy.getAdditionalRenderState().set(mat.getAdditionalRenderState());
|
||||
|
||||
//creating a dummy geom and assigning the dummy material to it
|
||||
|
Loading…
x
Reference in New Issue
Block a user