ProjectZombie/src/shootergame/entity/particle/ParticleBlood.java

77 lines
1.9 KiB
Java

package shootergame.entity.particle;
import java.util.Random;
import shootergame.display.Camera;
import shootergame.entity.EntityParticle;
import shootergame.util.gl.GlHelpers;
import shootergame.util.math.MathHelpers;
import shootergame.util.math.random.RandomHelpers;
import shootergame.util.math.vec.Vec2d;
import shootergame.util.math.vec.Vec2i;
import shootergame.world.chunk.Chunk;
import shootergame.world.layer.Layer;
public class ParticleBlood extends EntityParticle
{
private double r_color;
private double speed = 0.1;
private double time = 1000;
private double height = 0;
private double height_velocity = 0;
public ParticleBlood(Random rand, Vec2d pos, double angle) {
super(rand.nextDouble() / 5, 0);
this.pos = pos;
this.angle = angle + RandomHelpers.randrange(rand, -100, 100);
this.speed = rand.nextDouble() / 10;
this.height = rand.nextDouble();
this.height_velocity = rand.nextDouble() / 10;
this.pos.x += 0.5;
this.pos.y += 0.5;
r_color = RandomHelpers.randrange(rand, 200, 800) / 1000.0;
}
@Override
public void tick(Chunk chunk, Layer layer)
{
// Call super
super.tick(chunk, layer);
// Move in the velocity and remove some of it
moveBackward(speed);
height += height_velocity;
speed /= 1.05;
height_velocity -= 0.001;
if(height < 0) {
height = 0;
height_velocity = 0;
}
// Remove some time
time -= 1;
// Should this particle too old; destroy it
if(time < 0) chunk.killEntity(this);
}
@Override
public void render(Vec2d pos, Camera camera)
{
// Get the light level
double light = chunk.getLightLevel(new Vec2i(
MathHelpers.floor(pos.x), MathHelpers.floor(pos.y)));
// Set some settings
GlHelpers.pushMatrix();
GlHelpers.color3(r_color * light, 0, 0);
GlHelpers.translate(0, 0, height);
// Call super
super.render(pos, camera);
GlHelpers.color3(1, 1, 1);
GlHelpers.popMatrix();
}
}