SeqEffect / Auto-clear Erekir lost sectors

This commit is contained in:
Anuken
2022-02-14 14:05:29 -05:00
parent a7b1bf1c31
commit 33b15c798d
6 changed files with 56 additions and 3 deletions

View File

@@ -0,0 +1,46 @@
package mindustry.entities.effect;
import mindustry.entities.*;
/**
* Renders multiple particle effects in sequence.
* Will not work correctly for effects that modify life dynamically.
* */
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;
}
}
}