Java 类com.badlogic.gdx.graphics.g2d.ParticleEmitter 实例源码

项目:fabulae    文件:GraphicsUtil.java   
/**
 * Widens the emission angle of the supplied emitters
 * by the supplied coefficient. 
 * 
 * @param pe
 * @param coef
 */
public static void widen(Array<ParticleEmitter> emitters, float coef) {
    for (ParticleEmitter e : emitters) {
        float highMin = e.getAngle().getHighMin();
        float highMax = e.getAngle().getHighMax();

        float oldDist = (highMax - highMin);
        float newDist =  oldDist * coef;
        float distDif = newDist - oldDist;

        e.getAngle().setHighMax(highMax + distDif / 2); 
        e.getAngle().setHighMin(highMin - distDif / 2); 

        float lowMin = e.getAngle().getLowMin();
        float lowMax = e.getAngle().getLowMax();

        oldDist = (lowMax - lowMin);
        newDist =  oldDist * coef;
        distDif = newDist - oldDist;

        e.getAngle().setLowMax(lowMax + distDif / 2);
        e.getAngle().setLowMin(lowMin - distDif / 2);
    }
}
项目:Protoman-vs-Megaman    文件:ParticleFX.java   
@Override
public void update(float deltaTime) {
    if (attachedObj != null) {
        setPosition(attachedObj.getX() + objOffsetX, attachedObj.getY() + objOffsetY);
    }

    if (loopPosition > 0) {
        for (ParticleEmitter emitter : getEmitters()) {
            if (emitter.durationTimer > loopPosition) {
                emitter.durationTimer = loopPosition;
            }
        }
    }

    super.update(deltaTime);
}
项目:ZombieCopter    文件:ParticleSystem.java   
public void addEffect(String name, Vector2 position, float angle){
    logger.debug("Creating effect: " + name);
    ParticleEffect effect = App.assets.getEffect(name);
    if (effect == null) {
        logger.error("Couldn't create particle effect: " + name);
        return;
    }
    ParticleEffect e = new ParticleEffect(effect);
    for (ParticleEmitter emitter : e.getEmitters()){
        float a1 = emitter.getAngle().getHighMin(),
              a2 = emitter.getAngle().getHighMax();

        emitter.getRotation().setHighMin(a1 + angle);
        emitter.getRotation().setHighMax(a2 + angle);
    }
    e.setPosition(position.x * App.engine.PIXELS_PER_METER, position.y * App.engine.PIXELS_PER_METER);
    e.start();
    effects.add(e);

}
项目:libgdxcn    文件:ParticleEditor.java   
public ImageIcon getIcon (ParticleEmitter emitter) {
    ParticleData data = particleData.get(emitter);
    if (data == null) particleData.put(emitter, data = new ParticleData());
    String imagePath = emitter.getImagePath();
    if (data.icon == null && imagePath != null) {
        try {
            URL url;
            File file = new File(imagePath);
            if (file.exists())
                url = file.toURI().toURL();
            else {
                url = ParticleEditor.class.getResource(imagePath);
                if (url == null) return null;
            }
            data.icon = new ImageIcon(url);
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }
    }
    return data.icon;
}
项目:libgdxcn    文件:ParticleEditor.java   
private void loadImage (ParticleEmitter emitter) {
    final String imagePath = emitter.getImagePath();
    String imageName = new File(imagePath.replace('\\', '/')).getName();
    try {
        FileHandle file;
        if (imagePath.equals(ParticleEditor.DEFAULT_PARTICLE) || imagePath.equals(ParticleEditor.DEFAULT_PREMULT_PARTICLE))
            file = Gdx.files.classpath(imagePath);
        else
            file = Gdx.files.absolute(imagePath);
        emitter.setSprite(new Sprite(new Texture(file)));
    } catch (GdxRuntimeException ex) {
        ex.printStackTrace();
        EventQueue.invokeLater(new Runnable() {
            public void run () {
                JOptionPane.showMessageDialog(ParticleEditor.this, "Error loading image:\n" + imagePath);
            }
        });
        emitter.setImagePath(null);
    }
}
项目:libgdxcn    文件:EffectPanel.java   
public ParticleEmitter newEmitter (String name, boolean select) {
    final ParticleEmitter emitter = new ParticleEmitter();

    emitter.getDuration().setLow(1000);
    emitter.getEmission().setHigh(50);
    emitter.getLife().setHigh(500);
    emitter.getScale().setHigh(32, 32);

    emitter.getTint().setColors(new float[] {1, 0.12156863f, 0.047058824f});
    emitter.getTransparency().setHigh(1);

    emitter.setMaxParticleCount(25);
    emitter.setImagePath(ParticleEditor.DEFAULT_PARTICLE);

    addEmitter(name, select, emitter);
    return emitter;
}
项目:libgdxcn    文件:EffectPanel.java   
private void addEmitter (String name, boolean select, final ParticleEmitter emitter) {
    Array<ParticleEmitter> emitters = editor.effect.getEmitters();
    if (emitters.size == 0)
        emitter.setPosition(editor.worldCamera.viewportWidth / 2, editor.worldCamera.viewportHeight / 2);
    else {
        ParticleEmitter p = emitters.get(0);
        emitter.setPosition(p.getX(), p.getY());
    }
    emitters.add(emitter);

    emitterTableModel.addRow(new Object[] {name, true});
    if (select) {
        editor.reloadRows();
        int row = emitterTableModel.getRowCount() - 1;
        emitterTable.getSelectionModel().setSelectionInterval(row, row);
    }
}
项目:libgdxcn    文件:EffectPanel.java   
void saveEffect () {
    FileDialog dialog = new FileDialog(editor, "Save Effect", FileDialog.SAVE);
    if (lastDir != null) dialog.setDirectory(lastDir);
    dialog.setVisible(true);
    String file = dialog.getFile();
    String dir = dialog.getDirectory();
    if (dir == null || file == null || file.trim().length() == 0) return;
    lastDir = dir;
    int index = 0;
    for (ParticleEmitter emitter : editor.effect.getEmitters())
        emitter.setName((String)emitterTableModel.getValueAt(index++, 0));

    File outputFile = new File(dir, file);
    Writer fileWriter = null;
    try {
        fileWriter = new FileWriter(outputFile);
        editor.effect.save(fileWriter);
    } catch (Exception ex) {
        System.out.println("Error saving effect: " + outputFile.getAbsolutePath());
        ex.printStackTrace();
        JOptionPane.showMessageDialog(editor, "Error saving effect.");
    } finally {
        StreamUtils.closeQuietly(fileWriter);
    }
}
项目:droidtowers    文件:ParticleEffectManager.java   
public void resetEffect() {
    stopped = false;
    playbackTime = 0f;
    playbackDuration = 1f + Random.randomInt(1.75f, 4.5f);

    activeEffect.setPosition(Random.randomInt(worldBounds.x, worldBounds.width + 1), Random.randomInt(worldBounds.y, worldBounds.height + 1));

    for (ParticleEmitter emitter : activeEffect.getEmitters()) {
        emitter.reset();

        if (!emitter.getName().contains("smoke")) {
            emitter.getTint().setColors(colorsIterator.next());
        }
    }

}
项目:GdxStudio    文件:ParticlePanel.java   
public ImageIcon getIcon (ParticleEmitter emitter) {
    ParticleData data = particleData.get(emitter);
    if (data == null) particleData.put(emitter, data = new ParticleData());
    String imagePath = emitter.getImagePath();
    if (data.icon == null && imagePath != null) {
        try {
            URL url;
            File file = new File(imagePath);
            if (file.exists())
                url = file.toURI().toURL();
            else {
                url = ParticlePanel.class.getResource(imagePath);
                if (url == null) return null;
            }
            data.icon = new ImageIcon(url);
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }
    }
    return data.icon;
}
项目:GdxStudio    文件:EffectPanel.java   
public ParticleEmitter newEmitter (String name, boolean select) {
    final ParticleEmitter emitter = new ParticleEmitter();

    emitter.getDuration().setLow(1000);
    emitter.getEmission().setHigh(50);
    emitter.getLife().setHigh(500);
    emitter.getScale().setHigh(32, 32);

    emitter.getTint().setColors(new float[] {1, 0.12156863f, 0.047058824f});
    emitter.getTransparency().setHigh(1);

    emitter.setFlip(false, true);
    emitter.setMaxParticleCount(25);
    emitter.setImagePath("particle.png");

    addEmitter(name, select, emitter);
    return emitter;
}
项目:GdxStudio    文件:EffectPanel.java   
private void addEmitter (String name, boolean select, final ParticleEmitter emitter) {
    Array<ParticleEmitter> emitters = editor.effect.getEmitters();
    if (emitters.size == 0)
        emitter.setPosition(editor.worldCamera.viewportWidth / 2, editor.worldCamera.viewportHeight / 2);
    else {
        ParticleEmitter p = emitters.get(0);
        emitter.setPosition(p.getX(), p.getY());
    }
    emitters.add(emitter);

    emitterTableModel.addRow(new Object[] {name, true});
    if (select) {
        editor.reloadRows();
        int row = emitterTableModel.getRowCount() - 1;
        emitterTable.getSelectionModel().setSelectionInterval(row, row);
    }
}
项目:GdxStudio    文件:EffectPanel.java   
void saveEffect () {
    FileDialog dialog = new FileDialog((Frame) null, "Save Effect", FileDialog.SAVE);
    if (lastDir != null) dialog.setDirectory(lastDir);
    dialog.setVisible(true);
    String file = dialog.getFile();
    String dir = dialog.getDirectory();
    if (dir == null || file == null || file.trim().length() == 0) return;
    lastDir = dir;
    int index = 0;
    for (ParticleEmitter emitter : editor.effect.getEmitters())
        emitter.setName((String)emitterTableModel.getValueAt(index++, 0));
    try {
        editor.effect.save(new File(dir, file));
    } catch (Exception ex) {
        System.out.println("Error saving effect: " + new File(dir, file).getAbsolutePath());
        ex.printStackTrace();
        JOptionPane.showMessageDialog(editor, "Error saving effect.");
    }
}
项目:GdxStudio    文件:ParticleRenderer.java   
private void loadImage (ParticleEmitter emitter) {
    final String imagePath = emitter.getImagePath();
    String imageName = new File(imagePath.replace('\\', '/')).getName();
    try {
        FileHandle file;
        if (imagePath.equals("particle.png"))
            file = Gdx.files.classpath(imagePath);
        else
            file = Gdx.files.absolute(imagePath);
        emitter.setSprite(new Sprite(new Texture(file)));
    } catch (GdxRuntimeException ex) {
        ex.printStackTrace();
        EventQueue.invokeLater(new Runnable() {
            public void run () {
                JOptionPane.showMessageDialog(ParticleRenderer.this.particlePanel, "Error loading image:\n" + imagePath);
            }
        });
        emitter.setImagePath(null);
    }
}
项目:0Bit-Engine    文件:Overlap2DLoader.java   
/**
 * Adds a ParticleEffect from a ParticleEffectVO. Uses ParticleEmitterBox2D
 * @param item ParticleEffectVO to add
 */
private static void addParticle(ParticleEffectVO item) {
    ParticleEffect particleEffect = new ParticleEffect();
    particleEffect.load(Gdx.files.internal(particlesPath + "/" + item.particleName), atlas);
    particleEffect.scaleEffect(ZeroBit.pixelsToMeters * item.scaleX);

    for (int i=0; i < particleEffect.getEmitters().size; i++) {
        particleEffect.getEmitters().set(i, new ParticleEmitterBox2D(b2dSystem.getB2World(), particleEffect.getEmitters().get(i)));
        ParticleEmitter emitter = particleEffect.getEmitters().get(i);

        // Spawn scaling doesn't seem to alter the actual dimensions of the effect like in the editor
        /*emitter.getSpawnWidth().setHigh(emitter.getSpawnWidth().getHighMin() * item.scaleX, emitter.getSpawnWidth().getHighMax() * item.scaleX);
        emitter.getSpawnWidth().setLow(emitter.getSpawnWidth().getLowMin() * item.scaleX, emitter.getSpawnWidth().getLowMax() * item.scaleX);
        emitter.getSpawnHeight().setHigh(emitter.getSpawnHeight().getHighMin() * item.scaleY, emitter.getSpawnHeight().getHighMax() * item.scaleY);
        emitter.getSpawnHeight().setLow(emitter.getSpawnHeight().getLowMin() * item.scaleY, emitter.getSpawnHeight().getLowMax() * item.scaleY);*/

        emitter.setPosition(item.x * ZeroBit.pixelsToMeters, item.y * ZeroBit.pixelsToMeters);
    }
    //entityManager.getEngine().getSystem(RenderingSystem.class).addParticle(particleEffect);
    ParticleComponent pc = new ParticleComponent();
    pc.addParticle(particleEffect);
    addEntity(item, null, pc, new VisualComponent());
}
项目:craft    文件:ParticleRenderer.java   
@Override
public void setAlpha(float alpha) {

  // TODO: Alpha doesn't work for particles here as intended :(

  this.alpha = alpha;

  for (ParticleEffect e : effects.keySet()) {

    for (ParticleEmitter emitter : e.getEmitters()) {
      ScaledNumericValue v = emitter.getTransparency();
      v.setHigh(alpha);
      v.setLow(alpha);
    }
  }
}
项目:maze    文件:GameParticleHandler.java   
@Override
public void onCreateColor(Monster monster, MonsterColor color) {
    ParticleEffect effect = manager.create(Assets.getInstance().get(Assets.FLARE, ParticleEffect.class), false);
    Maze maze = monster.getMaze();

    float x = color.getX() * maze.getBlockSize() + maze.getX() + maze.getBlockSize() / 2;
    float y = color.getY() * maze.getBlockSize() + maze.getY() + maze.getBlockSize() / 2;

    effect.setPosition(x, y);

    manager.setColor(effect, new float[]{color.r, color.g, color.b}, new float[]{0f});
    effect.start();

    for (ParticleEmitter e : effect.getEmitters()) {
        e.getScale().setLow(Gdx.graphics.getWidth() / 100f);
        e.getDuration().setLow(Monster.LENGTH * StupidMonsterLogic.INTERVAL);
        e.getLife().setLow(Monster.LENGTH * StupidMonsterLogic.INTERVAL);
        e.getDuration().setLowMin(Monster.LENGTH * StupidMonsterLogic.INTERVAL);
        e.getLife().setLowMin(Monster.LENGTH * StupidMonsterLogic.INTERVAL);
        e.getVelocity().setLow(Gdx.graphics.getWidth() / 300f);
    }

    effects.put(color, effect);
}
项目:maze    文件:GameParticleHandler.java   
@Override
public void onRemoveTrailColor(MonsterColor color) {

    Maze maze = color.getMonster().getMaze();
    ParticleEffect effect = manager.create(Assets.getInstance().get(Assets.FLARE, ParticleEffect.class), false);
    float x = color.getX() * maze.getBlockSize() + maze.getX() + maze.getBlockSize() / 2;
    float y = color.getY() * maze.getBlockSize() + maze.getY() + maze.getBlockSize() / 2;

    effect.setPosition(x, y);

    manager.setColor(effect, new float[]{color.r, color.g, color.b}, new float[]{0f});
    effect.start();

    for (ParticleEmitter e : effect.getEmitters()) {
        e.getScale().setLow(Gdx.graphics.getWidth() / 30f);
        e.getDuration().setLow(Monster.LENGTH * StupidMonsterLogic.INTERVAL / 104);
        e.getLife().setLow(Monster.LENGTH * StupidMonsterLogic.INTERVAL / 140);
        e.getDuration().setLowMin(Monster.LENGTH * StupidMonsterLogic.INTERVAL / 140);
        e.getLife().setLowMin(Monster.LENGTH * StupidMonsterLogic.INTERVAL / 140);
        e.getVelocity().setLow(Gdx.graphics.getWidth() / 50f);
    }

    effects.put(color, effect);

    Gdx.input.vibrate(20);
}
项目:touhou-java    文件:ParticleEditor.java   
public ImageIcon getIcon (ParticleEmitter emitter) {
    ParticleData data = particleData.get(emitter);
    if (data == null) particleData.put(emitter, data = new ParticleData());
    String imagePath = emitter.getImagePath();
    if (data.icon == null && imagePath != null) {
        try {
            URL url;
            File file = new File(imagePath);
            if (file.exists())
                url = file.toURI().toURL();
            else {
                url = ParticleEditor.class.getResource(imagePath);
                if (url == null) return null;
            }
            data.icon = new ImageIcon(url);
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }
    }
    return data.icon;
}
项目:touhou-java    文件:ParticleEditor.java   
private void loadImage (ParticleEmitter emitter) {
    final String imagePath = emitter.getImagePath();
    String imageName = new File(imagePath.replace('\\', '/')).getName();
    try {
        FileHandle file;
        if (imagePath.equals("particle.png"))
            file = Gdx.files.classpath(imagePath);
        else
            file = Gdx.files.absolute(imagePath);
        emitter.setSprite(new Sprite(new Texture(file)));
    } catch (GdxRuntimeException ex) {
        ex.printStackTrace();
        EventQueue.invokeLater(new Runnable() {
            public void run () {
                JOptionPane.showMessageDialog(ParticleEditor.this, "Error loading image:\n" + imagePath);
            }
        });
        emitter.setImagePath(null);
    }
}
项目:touhou-java    文件:EffectPanel.java   
void saveEffect () {
    FileDialog dialog = new FileDialog(editor, "Save Effect", FileDialog.SAVE);
    if (lastDir != null) dialog.setDirectory(lastDir);
    dialog.setVisible(true);
    String file = dialog.getFile();
    String dir = dialog.getDirectory();
    if (dir == null || file == null || file.trim().length() == 0) return;
    lastDir = dir;
    int index = 0;
    for (ParticleEmitter emitter : editor.effect.getEmitters())
        emitter.setName((String)emitterTableModel.getValueAt(index++, 0));
    try {
        editor.effect.save(new File(dir, file));
    } catch (Exception ex) {
        System.out.println("Error saving effect: " + new File(dir, file).getAbsolutePath());
        ex.printStackTrace();
        JOptionPane.showMessageDialog(editor, "Error saving effect.");
    }
}
项目:acid-snake    文件:ParticleRenderer.java   
@Override
public void onCollide(int indexX, int indexY, Snake snake,
        WorldEntity target) {

    ParticleEffect explodeEffect = target.getType().getExplodeEffect();

    if (explodeEffect != null) {
        ParticleEffect effect = particleManager.create(explodeEffect, false);
        alignOnIndex(indexX, indexY, effect);
        for (ParticleEmitter emitter : effect.getEmitters()) {
            emitter.setMaxParticleCount(emitter.getMaxParticleCount() / target.getType().getParticleDecreaseFactor());
        }

        effect.start();
    }

}
项目:KyperBox    文件:ParticleSystem.java   
private static boolean containsAdditive(PooledEffect effect) {
    boolean additive = false;
    Array<ParticleEmitter> emmiters = effect.getEmitters();
    for (int i = 0; i < emmiters.size; i++) {
        if (emmiters.get(i).isAdditive()) {
            additive = true;
            break;
        }
    }
    return additive;
}
项目:jewelthief    文件:Particles.java   
/**
 * Resets the position, start color and duration of the given firework effects to random values.
 *
 * @param effect
 */
private void resetFireworksEffect(ParticleEffect effect) {
    effect.reset();
    effect.setDuration(Utils.randomWithin(180, 250));
    effect.setPosition(Utils.randomWithin(0, WINDOW_WIDTH), Utils.randomWithin(0, WINDOW_HEIGHT));
    float[] colors = effect.getEmitters().get(0).getTint().getColors();
    int randomStartColor = Utils.randomWithin(0, startColors.length - 1);
    for (int i = 0; i < 6; i++) {
        colors[i] = startColors[randomStartColor][i % 3];
    }
    for (ParticleEmitter emitter : effect.getEmitters()) {
        emitter.getTint().setColors(colors);
    }
}
项目:fabulae    文件:GraphicsUtil.java   
/**
 * Returns all emitters from the supplied effect with a name 
 * that starts with the supplied prefix.
 * 
 * Case insensitive.
 * 
 * @param pe
 * @param prefix
 * @return
 */
public static Array<ParticleEmitter> getEmittersByName(ParticleEffect pe, String prefix) {
    prefix = prefix.toLowerCase(Locale.ENGLISH);
    Array<ParticleEmitter> returnValue = new  Array<ParticleEmitter>();
    for (ParticleEmitter p : pe.getEmitters()) {
        if (p.getName().toLowerCase(Locale.ENGLISH).startsWith(prefix)) {
            returnValue.add(p);
        }
    }
    return returnValue;
}
项目:fabulae    文件:GraphicsUtil.java   
/**
 * Rotates the supplied emitters by the supplied
 * angle by adding it to the emission
 * angleemitters.
 * 
 * @param pe
 * @param angle the angle to rotate by, in degrees
 */
public static void rotateBy(Array<ParticleEmitter> emitters, float angle) {
    for (ParticleEmitter e : emitters) {
        float firstHighMin = e.getAngle().getHighMin();
        float firstHighMax = e.getAngle().getHighMax();
        float firstLowMax = e.getAngle().getLowMax();
        float firstLowMin = e.getAngle().getLowMin();

        e.getAngle().setHighMax(angle + firstHighMax);
        e.getAngle().setHighMin(angle + firstHighMin);
        e.getAngle().setLowMax(angle + firstLowMax);
        e.getAngle().setLowMin(angle + firstLowMin);
    }
}
项目:fabulae    文件:GraphicsUtil.java   
/**
 * Rotates the supplied particle effect by setting
 * the angle value of all emitters to the supplied value.
 * 
 * The first emitter is rotated to the supplied value
 * and the others are then rotated relatively to the first one.
 * 
 * @param pe
 * @param angle the new angle, in degrees
 */
public static void rotate(ParticleEffect pe, float angle) {
    boolean first = true;
    float firstHighMax = 0, firstHighMin = 0, firstLowMax = 0, firstLowMin = 0;
    for (ParticleEmitter e : pe.getEmitters()) {
        if (first) {
            firstHighMin = e.getAngle().getHighMin();
            firstHighMax = e.getAngle().getHighMax();
            firstLowMax = e.getAngle().getLowMax();
            firstLowMin = e.getAngle().getLowMin();

            e.getAngle().setHighMax(angle); 
            e.getAngle().setHighMin(angle - (firstHighMax-firstHighMin)); 
            e.getAngle().setLowMax(angle - (firstHighMax-firstLowMax));
            e.getAngle().setLowMin(angle - (firstHighMax-firstLowMin));

            first = false;
        } else {
            float oldAngle = e.getAngle().getHighMax();
            e.getAngle().setHighMax(angle - (firstHighMax-oldAngle)); 
            oldAngle = e.getAngle().getHighMin();
            e.getAngle().setHighMin(angle - (firstHighMin-oldAngle));
            oldAngle = e.getAngle().getLowMax();
            e.getAngle().setLowMax(angle - (firstLowMax-oldAngle));
            oldAngle = e.getAngle().getLowMin();
            e.getAngle().setLowMin(angle - (firstLowMin-oldAngle));
        }
    }
}
项目:fabulae    文件:GraphicsUtil.java   
/**
 * Changes the particle velocity of the supplied emitters
 * by multiplying it by the supplied coefficient. 
 * 
 * @param pe
 * @param coef
 */
public static void slow(Array<ParticleEmitter> emitters, float coef) {
    for (ParticleEmitter e : emitters) {
        float velocityHighMin = e.getVelocity().getHighMin();
        float velocityHighMax = e.getVelocity().getHighMax();
        float velocityLowMin = e.getVelocity().getLowMin();
        float velocityLowMax = e.getVelocity().getLowMax();

        e.getVelocity().setHighMax(velocityHighMax * coef); 
        e.getVelocity().setHighMin(velocityHighMin * coef); 
        e.getVelocity().setLowMax(velocityLowMax * coef);
        e.getVelocity().setLowMin(velocityLowMin * coef);
    }
}
项目:SPACEJUNK    文件:Engine.java   
public Engine(boolean fallIn, float toX) {
    super(fallIn, toX);

    sprite = new Sprite(Game.gfxMgr.getTexture("test", "engine.png"));
    sprite.setOrigin(sprite.getWidth() / 2f, sprite.getHeight() / 2);

    emit = new ParticleEmitter(Game.gfxMgr.getParticleEffect("test", "boss.p").getEmitters().get(0));
    emit.setPosition(this.x, this.y);

    laser = null;
    chargingMyLaser = false;

    this.bound = new Circle(this.x, this.y, 8);
}
项目:Protoman-vs-Megaman    文件:ParticleFX.java   
public void stop() {
    for (ParticleEmitter emitter : getEmitters()) {
        if (emitter.duration > loopPosition) {
            loopPosition = emitter.duration;
        }
    }
}
项目:libgdxcn    文件:EffectPanel.java   
public ParticleEmitter newExampleEmitter (String name, boolean select) {
    final ParticleEmitter emitter = new ParticleEmitter();

    emitter.getDuration().setLow(3000);

    emitter.getEmission().setHigh(250);

    emitter.getLife().setHigh(500, 1000);
    emitter.getLife().setTimeline(new float[] {0, 0.66f, 1});
    emitter.getLife().setScaling(new float[] {1, 1, 0.3f});

    emitter.getScale().setHigh(32, 32);

    emitter.getRotation().setLow(1, 360);
    emitter.getRotation().setHigh(180, 180);
    emitter.getRotation().setTimeline(new float[] {0, 1});
    emitter.getRotation().setScaling(new float[] {0, 1});
    emitter.getRotation().setRelative(true);

    emitter.getAngle().setHigh(45, 135);
    emitter.getAngle().setLow(90);
    emitter.getAngle().setTimeline(new float[] {0, 0.5f, 1});
    emitter.getAngle().setScaling(new float[] {1, 0, 0});
    emitter.getAngle().setActive(true);

    emitter.getVelocity().setHigh(30, 300);
    emitter.getVelocity().setActive(true);

    emitter.getTint().setColors(new float[] {1, 0.12156863f, 0.047058824f});

    emitter.getTransparency().setHigh(1, 1);
    emitter.getTransparency().setTimeline(new float[] {0, 0.2f, 0.8f, 1});
    emitter.getTransparency().setScaling(new float[] {0, 1, 0.75f, 0});

    emitter.setMaxParticleCount(200);
    emitter.setImagePath(ParticleEditor.DEFAULT_PARTICLE);

    addEmitter(name, select, emitter);
    return emitter;
}
项目:libgdxcn    文件:EffectPanel.java   
void openEffect () {
    FileDialog dialog = new FileDialog(editor, "Open Effect", FileDialog.LOAD);
    if (lastDir != null) dialog.setDirectory(lastDir);
    dialog.setVisible(true);
    final String file = dialog.getFile();
    final String dir = dialog.getDirectory();
    if (dir == null || file == null || file.trim().length() == 0) return;
    lastDir = dir;
    ParticleEffect effect = new ParticleEffect();
    try {
        effect.loadEmitters(Gdx.files.absolute(new File(dir, file).getAbsolutePath()));
        editor.effect = effect;
        emitterTableModel.getDataVector().removeAllElements();
        editor.particleData.clear();
    } catch (Exception ex) {
        System.out.println("Error loading effect: " + new File(dir, file).getAbsolutePath());
        ex.printStackTrace();
        JOptionPane.showMessageDialog(editor, "Error opening effect.");
        return;
    }
    for (ParticleEmitter emitter : effect.getEmitters()) {
        emitter.setPosition(editor.worldCamera.viewportWidth / 2, editor.worldCamera.viewportHeight / 2);
        emitterTableModel.addRow(new Object[] {emitter.getName(), true});
    }
    editIndex = 0;
    emitterTable.getSelectionModel().setSelectionInterval(editIndex, editIndex);
    editor.reloadRows();
}
项目:libgdxcn    文件:EffectPanel.java   
void duplicateEmitter() {
    int row = emitterTable.getSelectedRow();
    if (row == -1) return;

    String name = (String)emitterTableModel.getValueAt(row, 0);

    addEmitter(name, true, new ParticleEmitter(editor.effect.getEmitters().get(row)));
}
项目:libgdxcn    文件:EffectPanel.java   
void move (int direction) {
    if (direction < 0 && editIndex == 0) return;
    Array<ParticleEmitter> emitters = editor.effect.getEmitters();
    if (direction > 0 && editIndex == emitters.size - 1) return;
    int insertIndex = editIndex + direction;
    Object name = emitterTableModel.getValueAt(editIndex, 0);
    emitterTableModel.removeRow(editIndex);
    ParticleEmitter emitter = emitters.removeIndex(editIndex);
    emitterTableModel.insertRow(insertIndex, new Object[] {name});
    emitters.insert(insertIndex, emitter);
    editIndex = insertIndex;
    emitterTable.getSelectionModel().setSelectionInterval(editIndex, editIndex);
}
项目:droidtowers    文件:SmokeParticleEffect.java   
@Override
public void setSize(float width, float height) {
    for (ParticleEmitter emitter : particleEffect.getEmitters()) {
        emitter.getSpawnWidth().setHigh(width);
        emitter.getSpawnHeight().setHigh(height);
    }
}
项目:GdxStudio    文件:EffectPanel.java   
void openEffect () {
    FileDialog dialog = new FileDialog((Frame) null, "Open Effect", FileDialog.LOAD);
    if (lastDir != null) dialog.setDirectory(lastDir);
    dialog.setVisible(true);
    final String file = dialog.getFile();
    final String dir = dialog.getDirectory();
    if (dir == null || file == null || file.trim().length() == 0) return;
    lastDir = dir;
    ParticleEffect effect = new ParticleEffect();
    try {
        effect.loadEmitters(Gdx.files.absolute(new File(dir, file).getAbsolutePath()));
        editor.effect = effect;
        emitterTableModel.getDataVector().removeAllElements();
        editor.particleData.clear();
    } catch (Exception ex) {
        System.out.println("Error loading effect: " + new File(dir, file).getAbsolutePath());
        ex.printStackTrace();
        JOptionPane.showMessageDialog(editor, "Error opening effect.");
        return;
    }
    for (ParticleEmitter emitter : effect.getEmitters()) {
        emitter.setPosition(editor.worldCamera.viewportWidth / 2, editor.worldCamera.viewportHeight / 2);
        emitterTableModel.addRow(new Object[] {emitter.getName(), true});
    }
    editIndex = 0;
    emitterTable.getSelectionModel().setSelectionInterval(editIndex, editIndex);
    editor.reloadRows();
}
项目:GdxStudio    文件:EffectPanel.java   
void move (int direction) {
    if (direction < 0 && editIndex == 0) return;
    Array<ParticleEmitter> emitters = editor.effect.getEmitters();
    if (direction > 0 && editIndex == emitters.size - 1) return;
    int insertIndex = editIndex + direction;
    Object name = emitterTableModel.getValueAt(editIndex, 0);
    emitterTableModel.removeRow(editIndex);
    ParticleEmitter emitter = emitters.removeIndex(editIndex);
    emitterTableModel.insertRow(insertIndex, new Object[] {name});
    emitters.insert(insertIndex, emitter);
    editIndex = insertIndex;
    emitterTable.getSelectionModel().setSelectionInterval(editIndex, editIndex);
}
项目:plox    文件:ParticleManager.java   
public int getParticleCount(ParticleEffect effect) {

    int count = 0;

    for (ParticleEmitter emitter : effect.getEmitters()) {
        if (count < emitter.getMaxParticleCount()) {
            count = emitter.getMaxParticleCount();
        }
    }

    return count;
}
项目:plox    文件:ParticleManager.java   
public void setEndless(ParticleEffect effect, boolean endless) {

    if (effect != null) {
        effects.put(effect, endless);

        for (ParticleEmitter emitter : effect.getEmitters()) {
            emitter.setContinuous(endless);
        }
    }
}
项目:craft    文件:ParticleRenderer.java   
public int getParticleCount(ParticleEffect effect) {

    int count = 0;

    for (ParticleEmitter emitter : effect.getEmitters()) {
      if (count < emitter.getMaxParticleCount()) {
        count = emitter.getMaxParticleCount();
      }
    }

    return count;
  }