Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.amcgala.framework.shape.util;
  
  
 import java.util.List;
Emitter Klasse die ParticleContainer mit den gegebenen Eigenschaften ausgibt. Emitter kann dis/enabled werden. TODO: Bis jetzt erst 2d moeglich !

Author(s):
Steffen Troester
 
 public class ParticleEmitter extends AbstractShape implements Updatable {
 
     private boolean enabled = true;
     private double widthheight;
     private double xyz// Mittepunkt
     private Vector3d direction = Vector3d.createVector3d(0, 1, 0);
     private final List<Particleparticles = new CopyOnWriteArrayList<Particle>();
     private RotationZ rectrotation = new RotationZ(. / 2);
     private boolean visible;
     // Emitting Settings
     private int timeIntervalMs = 100;
     private double particleSpeed = 1.0;
     // Temp Settings
     private long timeStamp;
     private Random r = new Random();
 
     @Override
     public void update() {
         super.update();
 
         if ( == 0 || !) {
             setTimeStamp();
         } else {
             // Neuen Partikel anzeigen
             if (getTimeStampDifference() > ) {
                 setTimeStamp();
                 // rotate direction
                 Vector3d rot = .getTransformMatrix().times(.copy().toMatrix()).toVector3d();
                 // scale
                 rot.times(.nextDouble() * );
                 // translate
                 rot.x += ;
                 rot.y += ;
                 // addNode
                 .add(new Particle(.copy(),
                         rot.xrot.y));
             }
         }
         // Partikel updaten und gegebenenfalls manipulieren
         for (Particle p : ) {
             p.update();
             if (p.getLife() < 0) {
                 .remove(p);
             } else {
                 for (ParticleManipulation pm : ) {
                     if (pm.fitInRange(p.getX(), p.getY())) {
                         pm.manipulate(p);
                     }
                 }
             }
         }
     }
 
     public void setTimeStamp() {
          = System.nanoTime() / 1000000;
     }
 
     public long getTimeStampDifference() {
         return (System.nanoTime() / 1000000) - ;
     }

    
2D Constructor for Particle Emitter

Parameters:
width
x
y
direction
 
     public ParticleEmitter(double widthdouble xdouble yVector3d direction) {
         this. = width;
         this. = x;
         this. = y;
         this. = direction.normalize();
     }
 
     @Override
     public void render(Renderer renderer) {
         for (Particle p : ) {
            p.render(renderer);
        }
        for (ParticleManipulation pm : ) {
            pm.render(renderer);
        }
        // display emitterelement 2d
        if (isVisible()) {
            Vector3d scale = .copy().normalize().times();
            // rotate
            Vector3d rotateScale = .getTransformMatrix().times(scale.toMatrix()).toVector3d();
            // translate
            rotateScale.x += ;
            rotateScale.y += ;
            // display
            new Line(Vector3d.createVector3d(, 1), rotateScale).render(renderer);
        }
    }
        .add(p);
    }
    public boolean isEnabled() {
        return ;
    }
    public void setEnabled(boolean enabled) {
        this. = enabled;
    }
    public void enable() {
        this. = true;
    }
    public void disable() {
        this. = false;
    }
    public double getX() {
        return ;
    }
    public double getY() {
        return ;
    }
    public double getZ() {
        return ;
    }
    public Vector3d getDirection() {
        return ;
    }
    public Vector3d getScale() {
        Vector3d scale = .copy().times();
        return scale;
    }
    public double getWidth() {
        return ;
    }
    public double getHeight() {
        return ;
    }
    public void setX(double x) {
        this. = x;
    }
    public void setY(double y) {
        this. = y;
    }
    public void setZ(double z) {
        this. = z;
    }
    public void setDirection(Vector3d direction) {
        this. = direction;
    }
    public void setWidth(double width) {
        this. = width;
    }
    public void setHeight(double height) {
        this. = height;
    }
    public void setTimeIntervalMs(int timeIntervalMs) {
        this. = timeIntervalMs;
    }
    public void setParticleSpeed(double particleSpeed) {
        this. = particleSpeed;
    }
    public boolean isVisible() {
        return ;
    }
    public void setVisible(boolean visible) {
        this. = visible;
    }
New to GrepCode? Check out our FAQ X