From e14c30a3cf6e861d71b28c4e7183342aa3003147 Mon Sep 17 00:00:00 2001 From: Nehon Date: Sat, 7 Feb 2015 00:39:15 +0100 Subject: [PATCH] Enhanced the ShaderNodeDefinition creation wizard --- .../jme3/gde/materialdefinition/icons/add.png | Bin 0 -> 900 bytes .../gde/materialdefinition/icons/remove.png | Bin 0 -> 891 bytes .../shadernodedefinition/SNDefTemplate.j3sn | 6 +- .../jme3/gde/shadernodedefinition/sNDef.html | 13 -- .../wizard/Bundle.properties | 13 +- .../wizard/SNDefVisualPanel1.form | 128 ++++++++++++++-- .../wizard/SNDefVisualPanel1.java | 137 ++++++++++++++++-- .../wizard/SNDefVisualPanel2.form | 124 +++++++--------- .../wizard/SNDefVisualPanel2.java | 70 ++++----- .../wizard/SNDefWizardIterator.java | 38 +++-- .../shadernodedefinition/wizard/sNDef.html | 7 +- 11 files changed, 365 insertions(+), 171 deletions(-) create mode 100644 sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/add.png create mode 100644 sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/remove.png delete mode 100644 sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/sNDef.html diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/add.png b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/icons/add.png new file mode 100644 index 0000000000000000000000000000000000000000..91ca68d6775f91f245511ecbdb4c2748d0616e72 GIT binary patch literal 900 zcmV-~1AF|5P)@=m+OlQ??Z zZndkSZnWK@Q^riBM@tGGWthnZRz*$hLuTt*nh=$Y2eD2~qy zma?j55C3BK*-zN>=R4ebS%DM>APrC~7D0L-o6Vk-WqCcL zIZwF0pVc%ChMt3=DPRw=6XVXC zW?JxivIWL{aQK**oX7P?9IoeM`{*#1FC74NM<$cmD$UN$285&*iv>LW*u>bG34jM= zX$VaY!DFAgIe-Y;!tIL(abRo&Br1Bnp3lNCOwj;^o@ASE(|dq~01_6b00``F;am9b zY+4fpfy79V8mT!Xl51D=VxNc9aP%YW9D}a zg{O|=94?hgDCILawrf>-;a-v9+U-}=*~PZ?!#K9@H~f642DC3PgpHS5tyU-!;s`;- zu^kVvOo|>|cK=sQ)X``(c(>cVA~bkkt<^3Wx_)YKXh400001BCpEP)Obg3wE^ZBR=?(~Br2G;K=Sq(Q317WKmaK@db~i!EL>dY=T` zbQf{c-HAIhJG1kB=J=km>49a>?4IX&fAhTWQ3hd%_P-qzC7>#RRX1jA+n!~NodWPS z-mG>}6n}(acq>Y>C#3+G3g}FO5(a&|aQev9nqli$IXqIo6veU0IftSsmAWiTXqpDg zGE*l=Z-qG)hL9yFV!-n}w0Ap(;Ke=9b49Dw60YZoEXxF$2ohJ{gD4X1c3XIEPn5iP z;P!gv_VzYZ=`I9c_JiAY6!DE~;6(xZ%LS+!L+9poq}>jVEqw>eFhJE|7)D7%Cm6lwXK|Vu z^?DuV*cb*R_Se5h3I$oM25t|dvHUdxBJtA+r6vA*RS9rX!$06)IBFS*i+ERVBs8Dj6KnNhk>zz0<+Z=W%%DM+|5m5{3Nq zvlQ;)+oh_q6wB_#aoka<@^7+L`zxV@ z-7rPZ5Aea&MSS$bI{Yw!Pm>zF+WY^U)VQwuCnJNKdwYB5$H&L1{TAN6@)bPlzoeR> zy<9;Up!f16KDqvL^(@gH#}U5o|DrUTO>Ay${q)Z9<8w!+r)9F>bco9V%X29Itvpva`@AmxLcs-;O%?IrdwPm>$Y$RT_;3 zHa4DO$hIr&BpRGFO>>q8>twA~o00};ns&(GFG~G(-5UB`rF$ + Shader GLSL${version}: ${shaderSnippet}${version}${ext} + + Documentation{ ${description} <#list inputParams as param> diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/sNDef.html b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/sNDef.html deleted file mode 100644 index a0a7ab547..000000000 --- a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/sNDef.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - A new Shader Node Definition file that can be instantiated as a Shader Node in the Shader Node editor - - diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/Bundle.properties b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/Bundle.properties index 5a8a44796..53ec2b33e 100644 --- a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/Bundle.properties +++ b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/Bundle.properties @@ -3,8 +3,17 @@ SNDefVisualPanel1.defNameTextField.toolTipText= SNDefVisualPanel1.defNameTextField.text= SNDefVisualPanel1.jLabel2.text=Shader type SNDefVisualPanel1.jPanel2.border.title=Description -SNDefVisualPanel2.addButton.text= +SNDefVisualPanel2.addButton.text=Add SNDefVisualPanel2.titleLabel.text=Inputs SNDefVisualPanel2.addButton.toolTipText=Add an entry SNDefVisualPanel2.delButton.toolTipText=Delete an entry -SNDefVisualPanel2.delButton.text= +SNDefVisualPanel2.delButton.text=Remove +SNDefVisualPanel1.jLabel3.text=Glsl version +SNDefVisualPanel1.glsl100.text=1.0 +SNDefVisualPanel1.glsl110.text=1.1 +SNDefVisualPanel1.glsl120.text=1.2 +SNDefVisualPanel1.glsl130.text=1.3 +SNDefVisualPanel1.glsl140.text=1.4 +SNDefVisualPanel1.glsl150.text=1.5 +SNDefVisualPanel1.glslCustom.text=custom +SNDefVisualPanel1.customGlslVer.text= diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel1.form b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel1.form index e0b0605aa..a506578cb 100644 --- a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel1.form +++ b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel1.form @@ -31,22 +31,46 @@ - + - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -57,7 +81,7 @@ - + @@ -68,6 +92,18 @@ + + + + + + + + + + + + @@ -125,7 +161,7 @@ - + @@ -152,6 +188,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel1.java b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel1.java index a015b5398..c569617f2 100644 --- a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel1.java +++ b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel1.java @@ -6,6 +6,8 @@ package com.jme3.gde.shadernodedefinition.wizard; import com.jme3.shader.Shader; +import java.util.ArrayList; +import java.util.List; import javax.swing.DefaultComboBoxModel; import javax.swing.JPanel; @@ -20,7 +22,9 @@ public final class SNDefVisualPanel1 extends JPanel { initComponents(); DefaultComboBoxModel model = new DefaultComboBoxModel(); for (Shader.ShaderType shaderType : Shader.ShaderType.values()) { - model.addElement(shaderType.name()); + if(!shaderType.name().equalsIgnoreCase("geometry")){//hack to not have geometry shader remove that when geometry shader are in + model.addElement(shaderType.name()); + } } shaderTypeCB.setModel(model); } @@ -42,6 +46,34 @@ public final class SNDefVisualPanel1 extends JPanel { return descriptionTextArea.getText(); } + public List getGlslVersions(){ + List versions = new ArrayList(); + + if(glsl100.isSelected()){ + versions.add("100"); + } + if(glsl110.isSelected()){ + versions.add("110"); + } + if(glsl120.isSelected()){ + versions.add("120"); + } + if(glsl130.isSelected()){ + versions.add("130"); + } + if(glsl140.isSelected()){ + versions.add("140"); + } + if(glsl150.isSelected()){ + versions.add("150"); + } + if(glslCustom.isSelected()){ + versions.add(customGlslVer.getText().replace(".", "")+"0"); + } + + + return versions; + } /** * This method is called from within the constructor to initialize the form. @@ -59,6 +91,15 @@ public final class SNDefVisualPanel1 extends JPanel { jPanel2 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); descriptionTextArea = new javax.swing.JTextArea(); + customGlslVer = new javax.swing.JTextField(); + glsl110 = new javax.swing.JCheckBox(); + glsl100 = new javax.swing.JCheckBox(); + glsl120 = new javax.swing.JCheckBox(); + glsl130 = new javax.swing.JCheckBox(); + glsl150 = new javax.swing.JCheckBox(); + glsl140 = new javax.swing.JCheckBox(); + jLabel3 = new javax.swing.JLabel(); + glslCustom = new javax.swing.JCheckBox(); org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.jLabel1.text")); // NOI18N @@ -79,37 +120,83 @@ public final class SNDefVisualPanel1 extends JPanel { jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE) + .addComponent(jScrollPane1) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 157, Short.MAX_VALUE) ); + customGlslVer.setEditable(false); + customGlslVer.setText(org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.customGlslVer.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(glsl110, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.glsl110.text")); // NOI18N + + glsl100.setSelected(true); + org.openide.awt.Mnemonics.setLocalizedText(glsl100, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.glsl100.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(glsl120, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.glsl120.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(glsl130, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.glsl130.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(glsl150, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.glsl150.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(glsl140, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.glsl140.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.jLabel3.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(glslCustom, org.openide.util.NbBundle.getMessage(SNDefVisualPanel1.class, "SNDefVisualPanel1.glslCustom.text")); // NOI18N + glslCustom.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + glslCustomActionPerformed(evt); + } + }); + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() .addGap(14, 14, 14) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel2) - .addComponent(jLabel1)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(defNameTextField) - .addComponent(shaderTypeCB, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGap(19, 19, 19) + .addComponent(jLabel3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(glsl100) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(glsl110) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(glsl120) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(glsl130) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(glsl140) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(glsl150) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE) + .addComponent(glslCustom) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(customGlslVer, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel2) + .addComponent(jLabel1)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(defNameTextField) + .addComponent(shaderTypeCB, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() - .addGap(40, 40, 40) + .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(defNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) @@ -118,6 +205,17 @@ public final class SNDefVisualPanel1 extends JPanel { .addComponent(jLabel2) .addComponent(shaderTypeCB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(customGlslVer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(glsl110) + .addComponent(glsl100) + .addComponent(glsl120) + .addComponent(glsl130) + .addComponent(glsl150) + .addComponent(glsl140) + .addComponent(jLabel3) + .addComponent(glslCustom)) + .addGap(7, 7, 7) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); @@ -134,11 +232,28 @@ public final class SNDefVisualPanel1 extends JPanel { ); }// //GEN-END:initComponents + private void glslCustomActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_glslCustomActionPerformed + if (glslCustom.isSelected()) { + customGlslVer.setEditable(true); + }else{ + customGlslVer.setEditable(false); + } + }//GEN-LAST:event_glslCustomActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JTextField customGlslVer; private javax.swing.JTextField defNameTextField; private javax.swing.JTextArea descriptionTextArea; + private javax.swing.JCheckBox glsl100; + private javax.swing.JCheckBox glsl110; + private javax.swing.JCheckBox glsl120; + private javax.swing.JCheckBox glsl130; + private javax.swing.JCheckBox glsl140; + private javax.swing.JCheckBox glsl150; + private javax.swing.JCheckBox glslCustom; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JScrollPane jScrollPane1; diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.form b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.form index 4c9ed4d2b..564860974 100644 --- a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.form +++ b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.form @@ -16,84 +16,52 @@ - + + - + + + + + - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + + + + + + + + + + +
+
+
+
+
+
+ + + + + - - - - - - - - - - - - -
-
-
-
-
-
+ + @@ -101,10 +69,28 @@ + + + + + + + + + + + + + + + + + + - + @@ -121,7 +107,7 @@ - + diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.java b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.java index c46b595c0..5ab3d5747 100644 --- a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.java +++ b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefVisualPanel2.java @@ -93,10 +93,11 @@ public final class SNDefVisualPanel2 extends JPanel { // //GEN-BEGIN:initComponents private void initComponents() { - jPanel1 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); varTable = new javax.swing.JTable(); + jToolBar1 = new javax.swing.JToolBar(); titleLabel = new javax.swing.JLabel(); + jPanel1 = new javax.swing.JPanel(); addButton = new javax.swing.JButton(); delButton = new javax.swing.JButton(); @@ -119,9 +120,28 @@ public final class SNDefVisualPanel2 extends JPanel { }); jScrollPane1.setViewportView(varTable); + jToolBar1.setFloatable(false); + jToolBar1.setRollover(true); + org.openide.awt.Mnemonics.setLocalizedText(titleLabel, org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.titleLabel.text")); // NOI18N + jToolBar1.add(titleLabel); + + jPanel1.setOpaque(false); + + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); + jPanel1.setLayout(jPanel1Layout); + jPanel1Layout.setHorizontalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 412, Short.MAX_VALUE) + ); + jPanel1Layout.setVerticalGroup( + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 21, Short.MAX_VALUE) + ); - addButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materials/multiview/widgets/icons/picture_add.png"))); // NOI18N + jToolBar1.add(jPanel1); + + addButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/add.png"))); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(addButton, org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.addButton.text")); // NOI18N addButton.setToolTipText(org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.addButton.toolTipText")); // NOI18N addButton.setAlignmentX(0.5F); @@ -130,8 +150,9 @@ public final class SNDefVisualPanel2 extends JPanel { addButtonActionPerformed(evt); } }); + jToolBar1.add(addButton); - delButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materials/multiview/widgets/icons/picture_delete.png"))); // NOI18N + delButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/materialdefinition/icons/remove.png"))); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(delButton, org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.delButton.text")); // NOI18N delButton.setToolTipText(org.openide.util.NbBundle.getMessage(SNDefVisualPanel2.class, "SNDefVisualPanel2.delButton.toolTipText")); // NOI18N delButton.setAlignmentX(0.5F); @@ -140,49 +161,21 @@ public final class SNDefVisualPanel2 extends JPanel { delButtonActionPerformed(evt); } }); - - javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 388, Short.MAX_VALUE) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(titleLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(addButton) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(delButton))) - .addContainerGap()) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(titleLabel)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addComponent(delButton) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(jPanel1Layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(addButton))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 278, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); + jToolBar1.add(delButton); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 455, Short.MAX_VALUE)) ); }// //GEN-END:initComponents @@ -204,6 +197,7 @@ public final class SNDefVisualPanel2 extends JPanel { private javax.swing.JButton delButton; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JToolBar jToolBar1; private javax.swing.JLabel titleLabel; private javax.swing.JTable varTable; // End of variables declaration//GEN-END:variables diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefWizardIterator.java b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefWizardIterator.java index 8bbcc4a3a..0fdabe192 100644 --- a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefWizardIterator.java +++ b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/SNDefWizardIterator.java @@ -32,8 +32,8 @@ import org.openide.util.NbBundle.Messages; // TODO define position attribute @TemplateRegistrations({ -@TemplateRegistration(folder = "Material", content = "../SNDefTemplate.j3sn", displayName = "#SNDefWizardIterator_displayName", iconBase = "com/jme3/gde/materialdefinition/icons/node.png", description = "../sNDef.html", scriptEngine = "freemarker"), -@TemplateRegistration(folder = "Material", content = "../ShaderNodeSource", scriptEngine = "freemarker") + @TemplateRegistration(folder = "Material", content = "../SNDefTemplate.j3sn", displayName = "Shader Node Definition", iconBase = "com/jme3/gde/materialdefinition/icons/node.png", description = "./sNDef.html", scriptEngine = "freemarker"), + @TemplateRegistration(folder = "Material", content = "../ShaderNodeSource", scriptEngine = "freemarker") }) @Messages("SNDefWizardIterator_displayName=Shader Node Definition") @SuppressWarnings({"unchecked", "rawtypes"}) @@ -103,38 +103,36 @@ public final class SNDefWizardIterator implements WizardDescriptor.Instantiating //Get the template and convert it: FileObject tplSnd = Templates.getTemplate(wizard); FileObject tplShd = tplSnd.getParent().getChildren()[1]; - + DataObject templateSnd = DataObject.find(tplSnd); DataObject templateShd = DataObject.find(tplShd); - - //Get the package: FileObject dir = Templates.getTargetFolder(wizard); DataFolder df = DataFolder.findFolder(dir); - ProjectAssetManager assetManager = new ProjectAssetManager(Templates.getProject(wizard),"assets"); - + ProjectAssetManager assetManager = new ProjectAssetManager(Templates.getProject(wizard), "assets"); + //Get the class: String targetName = Templates.getTargetName(wizard); String shaderName = targetName; - if (panel1.getDefType().equals("Fragment")) { - shaderName += ".frag"; - } else if (panel1.getDefType().equals("Vertex")) { - shaderName += ".vert"; - } else { - shaderName += ".frag"; + String ext = ".frag"; + if (panel1.getDefType().equals("Vertex")) { + ext = ".vert"; } - - args.put("shaderSnippet",assetManager.getRelativeAssetPath(dir.getPath()+"/"+shaderName)); + args.put("ext", ext); + args.put("glslVersions", panel1.getGlslVersions()); + + args.put("shaderSnippet", assetManager.getRelativeAssetPath(dir.getPath() + "/" + shaderName)); //Define the template from the above, //passing the package, the file name, and the map of strings to the template: - // DataObject dobj = templateSnd.createFromTemplate(df, targetName, args); - - - DataObject sobj = templateShd.createFromTemplate(df, shaderName, args); - DataObject dobj = templateSnd.createFromTemplate(df, targetName, args); + // DataObject dobj = templateSnd.createFromTemplate(df, targetName, args); + for (String ver : panel1.getGlslVersions()) { + templateShd.createFromTemplate(df, shaderName + ver + ext, args); + } + + DataObject dobj = templateSnd.createFromTemplate(df, targetName, args); //Obtain a FileObject: createdFile = dobj.getPrimaryFile(); diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/sNDef.html b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/sNDef.html index 7996c72b7..a0a7ab547 100644 --- a/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/sNDef.html +++ b/sdk/jme3-materialeditor/src/com/jme3/gde/shadernodedefinition/wizard/sNDef.html @@ -7,10 +7,7 @@ and open the template in the editor. - - + + A new Shader Node Definition file that can be instantiated as a Shader Node in the Shader Node editor