]> icculus.org git repositories - divverent/nexuiz.git/blob - tools/ImgToMap/src/imgtomap/JFrameMain.java
UNBELIEVABLE NEW FEAUTURE! Create hidden visblockers inside the terrain!
[divverent/nexuiz.git] / tools / ImgToMap / src / imgtomap / JFrameMain.java
1 /*
2  * JFrameMain.java
3  *
4  * Created on 17. Mai 2008, 15:02
5  */
6
7 package imgtomap;
8
9 import java.io.File;
10 import javax.swing.JFileChooser;
11 import javax.swing.JOptionPane;
12
13 /**
14  *
15  * @author  maik
16  */
17 public class JFrameMain extends javax.swing.JFrame {
18
19     /** Creates new form JFrameMain */
20     public JFrameMain() {
21         initComponents();
22         String testinput = "/mnt/data/nexuizsvn/nexuiz/trunk/tools/ImgToMap/test1.png";
23         String testoutput = "/tmp/test.map";
24         
25         if(new File(testinput).exists()) {
26             jTextFieldInput.setText(testinput);
27             jTextFieldOutput.setText(testoutput);
28         }
29         
30         enableSkyPanel(jCheckBoxSky.isSelected());
31     }
32
33     /** This method is called from within the constructor to
34      * initialize the form.
35      * WARNING: Do NOT modify this code. The content of this method is
36      * always regenerated by the Form Editor.
37      */
38     @SuppressWarnings("unchecked")
39     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
40     private void initComponents() {
41
42         jPanel1 = new javax.swing.JPanel();
43         jTextFieldInput = new javax.swing.JTextField();
44         jButtonInput = new javax.swing.JButton();
45         jTextFieldOutput = new javax.swing.JTextField();
46         jButtonOutput = new javax.swing.JButton();
47         jButtonOK = new javax.swing.JButton();
48         jPanel2 = new javax.swing.JPanel();
49         jCheckBoxDetail = new javax.swing.JCheckBox();
50         jTextFieldTexture = new javax.swing.JTextField();
51         jLabel3 = new javax.swing.JLabel();
52         jSpinnerUnits = new javax.swing.JSpinner();
53         jSpinnerHeight = new javax.swing.JSpinner();
54         jSpinnerTextureScale = new javax.swing.JSpinner();
55         jLabel4 = new javax.swing.JLabel();
56         jLabel2 = new javax.swing.JLabel();
57         jLabel1 = new javax.swing.JLabel();
58         jCheckBoxVisBlocker = new javax.swing.JCheckBox();
59         jPanelSky = new javax.swing.JPanel();
60         jCheckBoxSky = new javax.swing.JCheckBox();
61         jLabel5 = new javax.swing.JLabel();
62         jSpinnerSkyHeight = new javax.swing.JSpinner();
63         jCheckBoxSkyFill = new javax.swing.JCheckBox();
64         jLabel6 = new javax.swing.JLabel();
65         jTextFieldSkyTexture = new javax.swing.JTextField();
66
67         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
68         setTitle("ImgToMap");
69
70         jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Files"));
71
72         jButtonInput.setText("Select input file");
73         jButtonInput.addActionListener(new java.awt.event.ActionListener() {
74             public void actionPerformed(java.awt.event.ActionEvent evt) {
75                 jButtonInputActionPerformed(evt);
76             }
77         });
78
79         jButtonOutput.setText("Select output file");
80         jButtonOutput.addActionListener(new java.awt.event.ActionListener() {
81             public void actionPerformed(java.awt.event.ActionEvent evt) {
82                 jButtonOutputActionPerformed(evt);
83             }
84         });
85
86         org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
87         jPanel1.setLayout(jPanel1Layout);
88         jPanel1Layout.setHorizontalGroup(
89             jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
90             .add(jPanel1Layout.createSequentialGroup()
91                 .addContainerGap()
92                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
93                     .add(org.jdesktop.layout.GroupLayout.LEADING, jTextFieldOutput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)
94                     .add(org.jdesktop.layout.GroupLayout.LEADING, jTextFieldInput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE))
95                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
96                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
97                     .add(org.jdesktop.layout.GroupLayout.TRAILING, jButtonInput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
98                     .add(org.jdesktop.layout.GroupLayout.TRAILING, jButtonOutput, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
99                 .addContainerGap())
100         );
101         jPanel1Layout.setVerticalGroup(
102             jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
103             .add(jPanel1Layout.createSequentialGroup()
104                 .addContainerGap()
105                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
106                     .add(jButtonInput)
107                     .add(jTextFieldInput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 27, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
108                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
109                 .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
110                     .add(jButtonOutput)
111                     .add(jTextFieldOutput, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 26, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
112                 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
113         );
114
115         jButtonOK.setText("Start conversion!");
116         jButtonOK.addActionListener(new java.awt.event.ActionListener() {
117             public void actionPerformed(java.awt.event.ActionEvent evt) {
118                 jButtonOKActionPerformed(evt);
119             }
120         });
121
122         jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Terrain configuration"));
123
124         jCheckBoxDetail.setSelected(true);
125         jCheckBoxDetail.setText("make detail");
126
127         jTextFieldTexture.setText("terrain/terrain1");
128
129         jLabel3.setText("Cover terrain surface with texture:");
130
131         jSpinnerUnits.setModel(new javax.swing.SpinnerNumberModel(256, 1, 2048, 1));
132
133         jSpinnerHeight.setModel(new javax.swing.SpinnerNumberModel(1024, 256, 16384, 1));
134         jSpinnerHeight.addChangeListener(new javax.swing.event.ChangeListener() {
135             public void stateChanged(javax.swing.event.ChangeEvent evt) {
136                 jSpinnerHeightStateChanged(evt);
137             }
138         });
139
140         jSpinnerTextureScale.setModel(new javax.swing.SpinnerNumberModel(0.5d, 0.25d, 16.0d, 0.25d));
141
142         jLabel4.setText("Texture scale:");
143
144         jLabel2.setText("Height for white:");
145
146         jLabel1.setText("Units per pixel:");
147
148         jCheckBoxVisBlocker.setSelected(true);
149         jCheckBoxVisBlocker.setText("generate visblockers");
150
151         org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
152         jPanel2.setLayout(jPanel2Layout);
153         jPanel2Layout.setHorizontalGroup(
154             jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
155             .add(jPanel2Layout.createSequentialGroup()
156                 .addContainerGap()
157                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
158                     .add(jPanel2Layout.createSequentialGroup()
159                         .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
160                             .add(jLabel1)
161                             .add(jLabel2))
162                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
163                         .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
164                             .add(jSpinnerHeight, 0, 0, Short.MAX_VALUE)
165                             .add(jSpinnerUnits))
166                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
167                         .add(jLabel4)
168                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
169                         .add(jSpinnerTextureScale, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE))
170                     .add(jLabel3)
171                     .add(org.jdesktop.layout.GroupLayout.TRAILING, jTextFieldTexture, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 416, Short.MAX_VALUE)
172                     .add(jPanel2Layout.createSequentialGroup()
173                         .add(jCheckBoxDetail)
174                         .add(18, 18, 18)
175                         .add(jCheckBoxVisBlocker)
176                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)))
177                 .addContainerGap())
178         );
179         jPanel2Layout.setVerticalGroup(
180             jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
181             .add(jPanel2Layout.createSequentialGroup()
182                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
183                     .add(jSpinnerUnits, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
184                     .add(jLabel1)
185                     .add(jLabel4)
186                     .add(jSpinnerTextureScale, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
187                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
188                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
189                     .add(jLabel2)
190                     .add(jSpinnerHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
191                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
192                 .add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
193                     .add(jCheckBoxDetail)
194                     .add(jCheckBoxVisBlocker))
195                 .add(14, 14, 14)
196                 .add(jLabel3)
197                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
198                 .add(jTextFieldTexture, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
199                 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
200         );
201
202         jPanelSky.setBorder(javax.swing.BorderFactory.createTitledBorder("Sky configuration"));
203
204         jCheckBoxSky.setSelected(true);
205         jCheckBoxSky.setText("generate a skybox");
206         jCheckBoxSky.addActionListener(new java.awt.event.ActionListener() {
207             public void actionPerformed(java.awt.event.ActionEvent evt) {
208                 jCheckBoxSkyActionPerformed(evt);
209             }
210         });
211
212         jLabel5.setText("Sky height:");
213
214         jSpinnerSkyHeight.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(1152), Integer.valueOf(256), null, Integer.valueOf(1)));
215         jSpinnerSkyHeight.addChangeListener(new javax.swing.event.ChangeListener() {
216             public void stateChanged(javax.swing.event.ChangeEvent evt) {
217                 jSpinnerSkyHeightStateChanged(evt);
218             }
219         });
220
221         jCheckBoxSkyFill.setSelected(true);
222         jCheckBoxSkyFill.setText("fill alpha-gaps with sky");
223
224         jLabel6.setText("Sky texture:");
225
226         jTextFieldSkyTexture.setText("skies/sky1");
227
228         org.jdesktop.layout.GroupLayout jPanelSkyLayout = new org.jdesktop.layout.GroupLayout(jPanelSky);
229         jPanelSky.setLayout(jPanelSkyLayout);
230         jPanelSkyLayout.setHorizontalGroup(
231             jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
232             .add(jPanelSkyLayout.createSequentialGroup()
233                 .addContainerGap()
234                 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
235                     .add(jTextFieldSkyTexture, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE)
236                     .add(jPanelSkyLayout.createSequentialGroup()
237                         .add(jCheckBoxSky)
238                         .add(18, 18, 18)
239                         .add(jCheckBoxSkyFill))
240                     .add(jPanelSkyLayout.createSequentialGroup()
241                         .add(jLabel5)
242                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
243                         .add(jSpinnerSkyHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 82, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
244                     .add(jLabel6))
245                 .addContainerGap())
246         );
247         jPanelSkyLayout.setVerticalGroup(
248             jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
249             .add(jPanelSkyLayout.createSequentialGroup()
250                 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
251                     .add(jCheckBoxSky)
252                     .add(jCheckBoxSkyFill))
253                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
254                 .add(jPanelSkyLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
255                     .add(jLabel5)
256                     .add(jSpinnerSkyHeight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
257                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
258                 .add(jLabel6)
259                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
260                 .add(jTextFieldSkyTexture, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
261                 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
262         );
263
264         org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
265         getContentPane().setLayout(layout);
266         layout.setHorizontalGroup(
267             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
268             .add(layout.createSequentialGroup()
269                 .addContainerGap()
270                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
271                     .add(jPanelSky, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
272                     .add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
273                     .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
274                     .add(jButtonOK))
275                 .addContainerGap())
276         );
277         layout.setVerticalGroup(
278             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
279             .add(layout.createSequentialGroup()
280                 .addContainerGap()
281                 .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
282                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
283                 .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
284                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
285                 .add(jPanelSky, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
286                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
287                 .add(jButtonOK)
288                 .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
289         );
290
291         pack();
292     }// </editor-fold>//GEN-END:initComponents
293
294 private void jButtonInputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInputActionPerformed
295     JFileChooser fc = new JFileChooser();
296     int ret = fc.showOpenDialog(this);
297     
298     if(ret == fc.APPROVE_OPTION) {
299         File f = fc.getSelectedFile();
300         if(f.exists()) {
301             jTextFieldInput.setText(f.getAbsolutePath());
302         }
303     }
304 }//GEN-LAST:event_jButtonInputActionPerformed
305
306 private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOKActionPerformed
307     this.setVisible(false);
308     Parameters p = new Parameters();
309     p.infile = jTextFieldInput.getText();
310     p.outfile = jTextFieldOutput.getText();
311     p.texture = jTextFieldTexture.getText();
312     p.skytexture = jTextFieldSkyTexture.getText();
313     p.pixelsize = (Integer)jSpinnerUnits.getValue();
314     p.height = (Integer)jSpinnerHeight.getValue();
315     p.sky = jCheckBoxSky.isSelected();
316     p.skyfill = jCheckBoxSkyFill.isSelected();
317     p.visblockers = jCheckBoxVisBlocker.isSelected();
318     p.skyheight = (Integer)jSpinnerSkyHeight.getValue();
319     p.texturescale = (Double)jSpinnerTextureScale.getValue();
320     p.detail = jCheckBoxDetail.isSelected();
321     int ret = new MapWriter().writeMap(p);
322     if(ret == 0) {
323         JOptionPane.showMessageDialog(this, "Map successfully generated!", "Success!", JOptionPane.INFORMATION_MESSAGE);
324     } else {
325         JOptionPane.showMessageDialog(this, "Error occured! Oh no!", "Error!", JOptionPane.ERROR_MESSAGE);
326     }
327     
328     
329     this.setVisible(true);
330 }//GEN-LAST:event_jButtonOKActionPerformed
331
332 private void jButtonOutputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOutputActionPerformed
333     JFileChooser fc = new JFileChooser();
334     int ret = fc.showOpenDialog(this);
335     
336     if(ret == fc.APPROVE_OPTION) {
337         File f = fc.getSelectedFile();
338         jTextFieldOutput.setText(f.getAbsolutePath());
339     }
340 }//GEN-LAST:event_jButtonOutputActionPerformed
341
342 private void jCheckBoxSkyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxSkyActionPerformed
343     enableSkyPanel(jCheckBoxSky.isSelected());
344 }//GEN-LAST:event_jCheckBoxSkyActionPerformed
345
346 private void jSpinnerHeightStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerHeightStateChanged
347     int value = (Integer)jSpinnerHeight.getValue();
348     int skyheight = (Integer)jSpinnerSkyHeight.getValue();
349     if(skyheight < value) {
350         jSpinnerSkyHeight.setValue(value);
351     }
352 }//GEN-LAST:event_jSpinnerHeightStateChanged
353
354 private void jSpinnerSkyHeightStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSpinnerSkyHeightStateChanged
355     int value =(Integer)jSpinnerSkyHeight.getValue();
356     int height = (Integer)jSpinnerHeight.getValue();
357     if(height > value) {
358         jSpinnerHeight.setValue(value);
359     }
360 }//GEN-LAST:event_jSpinnerSkyHeightStateChanged
361
362 private void enableSkyPanel(boolean b) {
363     jCheckBoxSkyFill.setEnabled(b);
364     jSpinnerSkyHeight.setEnabled(b);
365     jTextFieldSkyTexture.setEnabled(b);
366 }
367
368     /**
369     * @param args the command line arguments
370     */
371     public static void main(String args[]) {
372         java.awt.EventQueue.invokeLater(new Runnable() {
373             public void run() {
374                 new JFrameMain().setVisible(true);
375             }
376         });
377     }
378
379     // Variables declaration - do not modify//GEN-BEGIN:variables
380     private javax.swing.JButton jButtonInput;
381     private javax.swing.JButton jButtonOK;
382     private javax.swing.JButton jButtonOutput;
383     private javax.swing.JCheckBox jCheckBoxDetail;
384     private javax.swing.JCheckBox jCheckBoxSky;
385     private javax.swing.JCheckBox jCheckBoxSkyFill;
386     private javax.swing.JCheckBox jCheckBoxVisBlocker;
387     private javax.swing.JLabel jLabel1;
388     private javax.swing.JLabel jLabel2;
389     private javax.swing.JLabel jLabel3;
390     private javax.swing.JLabel jLabel4;
391     private javax.swing.JLabel jLabel5;
392     private javax.swing.JLabel jLabel6;
393     private javax.swing.JPanel jPanel1;
394     private javax.swing.JPanel jPanel2;
395     private javax.swing.JPanel jPanelSky;
396     private javax.swing.JSpinner jSpinnerHeight;
397     private javax.swing.JSpinner jSpinnerSkyHeight;
398     private javax.swing.JSpinner jSpinnerTextureScale;
399     private javax.swing.JSpinner jSpinnerUnits;
400     private javax.swing.JTextField jTextFieldInput;
401     private javax.swing.JTextField jTextFieldOutput;
402     private javax.swing.JTextField jTextFieldSkyTexture;
403     private javax.swing.JTextField jTextFieldTexture;
404     // End of variables declaration//GEN-END:variables
405
406 }