OSDN Git Service

[fixed] Bug where first lwjgl delta is large.
authornathan.sweet <nathan.sweet@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Tue, 2 Nov 2010 04:07:33 +0000 (04:07 +0000)
committernathan.sweet <nathan.sweet@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Tue, 2 Nov 2010 04:07:33 +0000 (04:07 +0000)
[removed] Synchronization from particle editor, since its now using the edt.

backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/desktop/LwjglApplication.java
backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/desktop/LwjglCanvas.java
backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/desktop/PNGDecoder.java
extensions/particle-editor/src/com/badlogic/gdx/graphics/particles/CountPanel.java
extensions/particle-editor/src/com/badlogic/gdx/graphics/particles/EffectPanel.java
extensions/particle-editor/src/com/badlogic/gdx/graphics/particles/GradientPanel.java
extensions/particle-editor/src/com/badlogic/gdx/graphics/particles/ImagePanel.java
extensions/particle-editor/src/com/badlogic/gdx/graphics/particles/OptionsPanel.java
extensions/particle-editor/src/com/badlogic/gdx/graphics/particles/ParticleEditor.java

index 86f239b..aa30c39 100644 (file)
@@ -63,7 +63,8 @@ public class LwjglApplication implements Application {
                \r
                int lastWidth = graphics.getWidth();\r
                int lastHeight = graphics.getHeight();\r
-               \r
+\r
+               graphics.lastTime = System.nanoTime();\r
                while(running && !Display.isCloseRequested()) {\r
                        graphics.updateTime();\r
                        input.update();\r
index a4b2041..61aef21 100644 (file)
@@ -53,8 +53,6 @@ public class LwjglCanvas implements Application {
                        }\r
                };\r
 \r
-               canvas.setSize(100, 100);\r
-               canvas.setMinimumSize(new Dimension(2, 2));\r
                graphics = new LwjglGraphics(canvas, useGL2);\r
                audio = new LwjglAudio();\r
                files = new LwjglFiles();\r
index 11f4753..585ac01 100644 (file)
@@ -64,7 +64,7 @@ class PNGDecoder {
        private static final int PLTE = 0x504C5445;
        private static final int tRNS = 0x74524E53;
        private static final int IDAT = 0x49444154;
-       @SuppressWarnings("unused") private static final int IEND = 0x49454E44;
+       private static final int IEND = 0x49454E44;
 
        private static final byte COLOR_GREYSCALE = 0;
        private static final byte COLOR_TRUECOLOR = 2;
index 6ccacf0..eeddc07 100644 (file)
@@ -22,16 +22,14 @@ class CountPanel extends EditorPanel {
                maxSpinner.setValue(editor.getEmitter().getMaxParticleCount());\r
                maxSpinner.addChangeListener(new ChangeListener() {\r
                        public void stateChanged (ChangeEvent event) {\r
-                                       editor.getEmitter().setMaxParticleCount((Integer)maxSpinner.getValue());\r
+                               editor.getEmitter().setMaxParticleCount((Integer)maxSpinner.getValue());\r
                        }\r
                });\r
 \r
                minSpinner.setValue(editor.getEmitter().getMinParticleCount());\r
                minSpinner.addChangeListener(new ChangeListener() {\r
                        public void stateChanged (ChangeEvent event) {\r
-                               synchronized (editor.effect) {\r
-                                       editor.getEmitter().setMinParticleCount((Integer)minSpinner.getValue());\r
-                               }\r
+                               editor.getEmitter().setMinParticleCount((Integer)minSpinner.getValue());\r
                        }\r
                });\r
        }\r
index 8043e6c..6189dfa 100644 (file)
@@ -68,16 +68,16 @@ class EffectPanel extends JPanel {
                emitter.setFlip(false, true);\r
                emitter.setMaxParticleCount(15);\r
                emitter.setImagePath("data/particle.png");\r
-               synchronized (editor.effect) {\r
-                       ArrayList<ParticleEmitter> emitters = editor.effect.getEmitters();\r
-                       if (emitters.isEmpty())\r
-                               emitter.setPosition(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);\r
-                       else {\r
-                               ParticleEmitter p = emitters.get(0);\r
-                               emitter.setPosition(p.getX(), p.getY());\r
-                       }\r
-                       emitters.add(emitter);\r
+\r
+               ArrayList<ParticleEmitter> emitters = editor.effect.getEmitters();\r
+               if (emitters.isEmpty())\r
+                       emitter.setPosition(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);\r
+               else {\r
+                       ParticleEmitter p = emitters.get(0);\r
+                       emitter.setPosition(p.getX(), p.getY());\r
                }\r
+               emitters.add(emitter);\r
+\r
                emitterTableModel.addRow(new Object[] {name, true});\r
                if (select) {\r
                        editor.reloadRows();\r
@@ -108,25 +108,21 @@ class EffectPanel extends JPanel {
                lastDir = dir;\r
                ParticleEffect effect = new ParticleEffect();\r
                try {\r
-                       synchronized (editor.effect) {\r
-                               effect.loadEmitters(Gdx.files.getFileHandle(new File(dir, file).getAbsolutePath(), FileType.Absolute));\r
-                               editor.effect = effect;\r
-                               emitterTableModel.getDataVector().removeAllElements();\r
-                               editor.particleData.clear();\r
-                       }\r
+                       effect.loadEmitters(Gdx.files.getFileHandle(new File(dir, file).getAbsolutePath(), FileType.Absolute));\r
+                       editor.effect = effect;\r
+                       emitterTableModel.getDataVector().removeAllElements();\r
+                       editor.particleData.clear();\r
                } catch (Exception ex) {\r
                        System.out.println("Error loading effect: " + new File(dir, file).getAbsolutePath());\r
                        ex.printStackTrace();\r
                        JOptionPane.showMessageDialog(editor, "Error opening effect.");\r
                        return;\r
                }\r
-               synchronized (editor.effect) {\r
-                       for (ParticleEmitter emitter : effect.getEmitters()) {\r
-                               emitter.setPosition(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);\r
-                               emitterTableModel.addRow(new Object[] {emitter.getName(), true});\r
-                       }\r
-                       editIndex = 0;\r
+               for (ParticleEmitter emitter : effect.getEmitters()) {\r
+                       emitter.setPosition(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);\r
+                       emitterTableModel.addRow(new Object[] {emitter.getName(), true});\r
                }\r
+               editIndex = 0;\r
                emitterTable.getSelectionModel().setSelectionInterval(editIndex, editIndex);\r
                editor.reloadRows();\r
        }\r
@@ -139,57 +135,49 @@ class EffectPanel extends JPanel {
                String dir = dialog.getDirectory();\r
                if (dir == null || file == null || file.trim().length() == 0) return;\r
                lastDir = dir;\r
-               synchronized (editor.effect) {\r
-                       int index = 0;\r
-                       for (ParticleEmitter emitter : editor.effect.getEmitters())\r
-                               emitter.setName((String)emitterTableModel.getValueAt(index++, 0));\r
-                       try {\r
-                               editor.effect.save(new File(dir, file));\r
-                       } catch (Exception ex) {\r
-                               System.out.println("Error saving effect: " + new File(dir, file).getAbsolutePath());\r
-                               ex.printStackTrace();\r
-                               JOptionPane.showMessageDialog(editor, "Error saving effect.");\r
-                       }\r
+               int index = 0;\r
+               for (ParticleEmitter emitter : editor.effect.getEmitters())\r
+                       emitter.setName((String)emitterTableModel.getValueAt(index++, 0));\r
+               try {\r
+                       editor.effect.save(new File(dir, file));\r
+               } catch (Exception ex) {\r
+                       System.out.println("Error saving effect: " + new File(dir, file).getAbsolutePath());\r
+                       ex.printStackTrace();\r
+                       JOptionPane.showMessageDialog(editor, "Error saving effect.");\r
                }\r
        }\r
 \r
        void deleteEmitter () {\r
-               synchronized (editor.effect) {\r
-                       if (editor.effect.getEmitters().size() == 1) return;\r
-                       int row = emitterTable.getSelectedRow();\r
-                       if (row == -1) return;\r
-                       if (row <= editIndex) {\r
-                               int oldEditIndex = editIndex;\r
-                               editIndex = Math.max(0, editIndex - 1);\r
-                               if (oldEditIndex == row) editor.reloadRows();\r
-                       }\r
-                       editor.effect.getEmitters().remove(row);\r
-                       emitterTableModel.removeRow(row);\r
+               if (editor.effect.getEmitters().size() == 1) return;\r
+               int row = emitterTable.getSelectedRow();\r
+               if (row == -1) return;\r
+               if (row <= editIndex) {\r
+                       int oldEditIndex = editIndex;\r
+                       editIndex = Math.max(0, editIndex - 1);\r
+                       if (oldEditIndex == row) editor.reloadRows();\r
                }\r
+               editor.effect.getEmitters().remove(row);\r
+               emitterTableModel.removeRow(row);\r
                emitterTable.getSelectionModel().setSelectionInterval(editIndex, editIndex);\r
        }\r
 \r
        void move (int direction) {\r
                if (direction < 0 && editIndex == 0) return;\r
-               synchronized (editor.effect) {\r
-                       ArrayList<ParticleEmitter> emitters = editor.effect.getEmitters();\r
-                       if (direction > 0 && editIndex == emitters.size() - 1) return;\r
-                       int insertIndex = editIndex + direction;\r
-                       Object name = emitterTableModel.getValueAt(editIndex, 0);\r
-                       emitterTableModel.removeRow(editIndex);\r
-                       ParticleEmitter emitter = emitters.remove(editIndex);\r
-                       emitterTableModel.insertRow(insertIndex, new Object[] {name});\r
-                       emitters.add(insertIndex, emitter);\r
-                       editIndex = insertIndex;\r
-               }\r
+               ArrayList<ParticleEmitter> emitters = editor.effect.getEmitters();\r
+               if (direction > 0 && editIndex == emitters.size() - 1) return;\r
+               int insertIndex = editIndex + direction;\r
+               Object name = emitterTableModel.getValueAt(editIndex, 0);\r
+               emitterTableModel.removeRow(editIndex);\r
+               ParticleEmitter emitter = emitters.remove(editIndex);\r
+               emitterTableModel.insertRow(insertIndex, new Object[] {name});\r
+               emitters.add(insertIndex, emitter);\r
+               editIndex = insertIndex;\r
                emitterTable.getSelectionModel().setSelectionInterval(editIndex, editIndex);\r
        }\r
 \r
        void emitterChecked (int index, boolean checked) {\r
-               synchronized (editor.effect) {\r
-                       editor.setEnabled(editor.effect.getEmitters().get(index), checked);\r
-                       editor.effect.start();\r
-               }\r
+               editor.setEnabled(editor.effect.getEmitters().get(index), checked);\r
+               editor.effect.start();\r
        }\r
 \r
        private void initializeComponents () {\r
index 0c3ed53..ad24a39 100644 (file)
@@ -136,8 +136,8 @@ class GradientPanel extends EditorPanel {
        void updateColor () {\r
                Color color = new Color(Color.HSBtoRGB(hueSlider.getPercentage(), 1 - saturationSlider.getPercentage(), 1));\r
                lightnessSlider.setColors(new Color[] {color, Color.black});\r
-               color = new Color(Color.HSBtoRGB(hueSlider.getPercentage(), 1 - saturationSlider.getPercentage(), 1 - lightnessSlider\r
-                       .getPercentage()));\r
+               color = new Color(Color.HSBtoRGB(hueSlider.getPercentage(), 1 - saturationSlider.getPercentage(),\r
+                       1 - lightnessSlider.getPercentage()));\r
                colorPanel.setBackground(color);\r
                gradientEditor.setColor(color);\r
 \r
index a35f803..c1e46c0 100644 (file)
@@ -11,11 +11,8 @@ import java.io.File;
 import javax.swing.ImageIcon;\r
 import javax.swing.JButton;\r
 import javax.swing.JLabel;\r
-import javax.swing.JOptionPane;\r
 import javax.swing.JPanel;\r
 \r
-import com.badlogic.gdx.graphics.particles.ParticleEmitter;\r
-\r
 class ImagePanel extends EditorPanel {\r
        JLabel imageLabel;\r
        JLabel widthLabel;\r
@@ -40,16 +37,14 @@ class ImagePanel extends EditorPanel {
                                        lastDir = dir;\r
                                        try {\r
                                                ImageIcon icon = new ImageIcon(new File(dir, file).toURI().toURL());\r
-                                               synchronized (editor.effect) {\r
-                                                       final ParticleEmitter emitter = editor.getEmitter();\r
-                                                       editor.setIcon(emitter, icon);\r
-                                                       imageLabel.setIcon(icon);\r
-                                                       widthLabel.setText("Width: " + icon.getIconWidth());\r
-                                                       heightLabel.setText("Height: " + icon.getIconHeight());\r
-                                                       revalidate();\r
-                                                       emitter.setImagePath(new File(dir, file).getAbsolutePath());\r
-                                                       emitter.setTexture(null);\r
-                                               }\r
+                                               final ParticleEmitter emitter = editor.getEmitter();\r
+                                               editor.setIcon(emitter, icon);\r
+                                               imageLabel.setIcon(icon);\r
+                                               widthLabel.setText("Width: " + icon.getIconWidth());\r
+                                               heightLabel.setText("Height: " + icon.getIconHeight());\r
+                                               revalidate();\r
+                                               emitter.setImagePath(new File(dir, file).getAbsolutePath());\r
+                                               emitter.setTexture(null);\r
                                        } catch (Exception ex) {\r
                                                ex.printStackTrace();\r
                                        }\r
index 79c8a02..81724eb 100644 (file)
@@ -12,8 +12,6 @@ import javax.swing.JPanel;
 import javax.swing.event.ChangeEvent;\r
 import javax.swing.event.ChangeListener;\r
 \r
-import com.badlogic.gdx.graphics.particles.ParticleEmitter;\r
-\r
 class OptionsPanel extends EditorPanel {\r
        JCheckBox attachedCheckBox;\r
        JCheckBox continuousCheckbox;\r
@@ -28,42 +26,32 @@ class OptionsPanel extends EditorPanel {
 \r
                attachedCheckBox.addActionListener(new ActionListener() {\r
                        public void actionPerformed (ActionEvent event) {\r
-                               synchronized (editor.effect) {\r
-                                       editor.getEmitter().setAttached(attachedCheckBox.isSelected());\r
-                               }\r
+                               editor.getEmitter().setAttached(attachedCheckBox.isSelected());\r
                        }\r
                });\r
 \r
                continuousCheckbox.setSelected(editor.getEmitter().isContinuous());\r
                continuousCheckbox.addActionListener(new ActionListener() {\r
                        public void actionPerformed (ActionEvent event) {\r
-                               synchronized (editor.effect) {\r
-                                       editor.getEmitter().setContinuous(continuousCheckbox.isSelected());\r
-                               }\r
+                               editor.getEmitter().setContinuous(continuousCheckbox.isSelected());\r
                        }\r
                });\r
 \r
                alignedCheckbox.addChangeListener(new ChangeListener() {\r
                        public void stateChanged (ChangeEvent event) {\r
-                               synchronized (editor.effect) {\r
-                                       editor.getEmitter().setAligned(alignedCheckbox.isSelected());\r
-                               }\r
+                               editor.getEmitter().setAligned(alignedCheckbox.isSelected());\r
                        }\r
                });\r
 \r
                additiveCheckbox.addChangeListener(new ChangeListener() {\r
                        public void stateChanged (ChangeEvent event) {\r
-                               synchronized (editor.effect) {\r
-                                       editor.getEmitter().setAdditive(additiveCheckbox.isSelected());\r
-                               }\r
+                               editor.getEmitter().setAdditive(additiveCheckbox.isSelected());\r
                        }\r
                });\r
 \r
                behindCheckbox.addChangeListener(new ChangeListener() {\r
                        public void stateChanged (ChangeEvent event) {\r
-                               synchronized (editor.effect) {\r
-                                       editor.getEmitter().setBehind(behindCheckbox.isSelected());\r
-                               }\r
+                               editor.getEmitter().setBehind(behindCheckbox.isSelected());\r
                        }\r
                });\r
 \r
index 64b1244..98197ee 100644 (file)
@@ -2,9 +2,7 @@
 package com.badlogic.gdx.graphics.particles;\r
 \r
 import java.awt.BorderLayout;\r
-import java.awt.Canvas;\r
 import java.awt.Component;\r
-import java.awt.Dimension;\r
 import java.awt.EventQueue;\r
 import java.awt.Graphics;\r
 import java.awt.GridBagConstraints;\r
@@ -31,10 +29,9 @@ import javax.swing.border.CompoundBorder;
 import javax.swing.plaf.basic.BasicSplitPaneUI;\r
 \r
 import com.badlogic.gdx.ApplicationListener;\r
+import com.badlogic.gdx.Files.FileType;\r
 import com.badlogic.gdx.Gdx;\r
 import com.badlogic.gdx.InputProcessor;\r
-import com.badlogic.gdx.Files.FileType;\r
-import com.badlogic.gdx.backends.desktop.LwjglApplication;\r
 import com.badlogic.gdx.backends.desktop.LwjglCanvas;\r
 import com.badlogic.gdx.graphics.BitmapFont;\r
 import com.badlogic.gdx.graphics.Color;\r