mirror of
https://github.com/processing/processing4.git
synced 2026-04-30 16:05:55 +02:00
moving the OpenGL examples to the core
This commit is contained in:
58
java/examples/OpenGL/Advanced/Particles/Particle.pde
Normal file
58
java/examples/OpenGL/Advanced/Particles/Particle.pde
Normal file
@@ -0,0 +1,58 @@
|
||||
class Particle {
|
||||
|
||||
PVector velocity;
|
||||
float lifespan = 255;
|
||||
|
||||
PShape part;
|
||||
float partSize;
|
||||
|
||||
PVector gravity = new PVector(0,0.1);
|
||||
|
||||
|
||||
Particle() {
|
||||
partSize = random(10,60);
|
||||
part = createShape(QUAD);
|
||||
part.noStroke();
|
||||
part.texture(sprite);
|
||||
part.normal(0, 0, 1);
|
||||
part.vertex(-partSize/2, -partSize/2, 0, 0);
|
||||
part.vertex(+partSize/2, -partSize/2, sprite.width, 0);
|
||||
part.vertex(+partSize/2, +partSize/2, sprite.width, sprite.height);
|
||||
part.vertex(-partSize/2, +partSize/2, 0, sprite.height);
|
||||
part.end();
|
||||
|
||||
rebirth(width/2,height/2);
|
||||
lifespan = random(255);
|
||||
}
|
||||
|
||||
PShape getShape() {
|
||||
return part;
|
||||
}
|
||||
|
||||
void rebirth(float x, float y) {
|
||||
float a = random(TWO_PI);
|
||||
float speed = random(0.5,4);
|
||||
velocity = new PVector(cos(a), sin(a));
|
||||
velocity.mult(speed);
|
||||
lifespan = 255;
|
||||
part.resetMatrix();
|
||||
part.translate(x, y);
|
||||
}
|
||||
|
||||
boolean isDead() {
|
||||
if (lifespan < 0) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void update() {
|
||||
lifespan = lifespan - 1;
|
||||
velocity.add(gravity);
|
||||
|
||||
part.tint(255,lifespan);
|
||||
part.translate(velocity.x, velocity.y);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user