Files
Mindustry/core/src/mindustry/entities/effect/SeqEffect.java
2022-02-14 14:45:45 -05:00

48 lines
1.2 KiB
Java

package mindustry.entities.effect;
import mindustry.entities.*;
/**
* Renders multiple particle effects in sequence.
* Will not work correctly for effects that modify life dynamically.
* Z layer of child effects is ignored.
* */
public class SeqEffect extends Effect{
public Effect[] effects = {};
public SeqEffect(){
clip = 100f;
}
public SeqEffect(Effect... effects){
this();
this.effects = effects;
}
@Override
public void init(){
lifetime = 0f;
for(Effect f : effects){
f.init();
clip = Math.max(clip, f.clip);
lifetime += f.lifetime;
}
}
@Override
public void render(EffectContainer e){
var cont = e.inner();
float life = e.time, sum = 0f;
for(int i = 0; i < effects.length; i++){
var fx = effects[i];
if(life <= fx.lifetime + sum){
cont.set(e.id + i, e.color, life - sum, fx.lifetime, e.rotation, e.x, e.y, e.data);
fx.render(cont);
clip = Math.max(clip, fx.clip);
break;
}
sum += fx.lifetime;
}
}
}