package org.terasology.components; import com.google.common.collect.Lists; import org.terasology.entitySystem.Component; import org.terasology.model.blocks.BlockFamily; import javax.vecmath.Vector2f; import javax.vecmath.Vector3f; import java.io.Serializable; import java.util.List; /** * @author Immortius <immortius@gmail.com> */ // TODO: Generalise for non-block particles? public final class BlockParticleEffectComponent implements Component { public BlockFamily blockType; public int spawnCount = 16; public boolean destroyEntityOnCompletion; // Initial conditions public Vector3f spawnRange = new Vector3f(); public Vector3f initialVelocityRange = new Vector3f(); public float minSize = 0.1f; public float maxSize = 1.0f; public float minLifespan = 0.0f; public float maxLifespan = 1.0f; // Lifetime conditions public Vector3f targetVelocity = new Vector3f(); public Vector3f acceleration = new Vector3f(); public boolean collideWithBlocks = false; public List<Particle> particles = Lists.newArrayList(); public static class Particle implements Serializable, Cloneable { public Vector3f velocity = new Vector3f(); public Vector3f position = new Vector3f(); public float size = 1.0f; public float lifeRemaining = 1.0f; public Vector2f texOffset = new Vector2f(0, 0); //public Vector2f texSize = new Vector2f(1,1); public Particle clone() { Particle particle = new Particle(); particle.velocity.set(velocity); particle.position.set(position); particle.size = size; particle.lifeRemaining = lifeRemaining; particle.texOffset.set(texOffset); //particle.texSize.set(texSize); return particle; } } }