1package com.fs.starfarer.api.impl.campaign.eventide;
4import java.util.ArrayList;
5import java.util.Iterator;
8import org.lwjgl.opengl.GL11;
9import org.lwjgl.util.vector.Vector2f;
11import com.fs.starfarer.api.util.Misc;
15 public static class QuadParticleData {
16 public Vector2f loc =
new Vector2f();
17 public Vector2f vel =
new Vector2f();
22 public float fadeTime;
23 public float floorMod = 0;
26 public List<QuadParticleData>
particles =
new ArrayList<QuadParticleData>();
28 public float floor = -10000000f;
39 public void addParticle(
float x,
float y,
float dx,
float dy) {
43 public void addParticle(
float x,
float y,
float dx,
float dy,
float size) {
44 float r1 = (float) Math.random();
49 r1 = (float) Math.random();
54 r1 = (float) Math.random();
59 r1 = (float) Math.random();
64 addParticle(x, y, dx, dy, size,
new Color(r, g, b, a));
67 public void addParticle(
float x,
float y,
float dx,
float dy,
float size, Color color) {
71 public void addParticle(
float x,
float y,
float dx,
float dy,
float size, Color color,
float maxDur) {
75 QuadParticleData p =
new QuadParticleData();
89 return curr.loc.y <=
floor + curr.floorMod;
93 Iterator<QuadParticleData> iter =
particles.iterator();
94 while (iter.hasNext()) {
95 QuadParticleData curr = iter.next();
96 curr.elapsed += amount;
102 curr.loc.x += curr.vel.x * amount;
103 curr.loc.y += curr.vel.y * amount;
104 if (curr.loc.y <
floor + curr.floorMod) {
105 curr.loc.y =
floor + curr.floorMod;
112 if (curr.elapsed > curr.maxDur) {
118 public void render(
float alphaMult,
boolean onFloor) {
119 GL11.glDisable(GL11.GL_TEXTURE_2D);
120 GL11.glEnable(GL11.GL_BLEND);
123 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
125 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
132 float left = p.maxDur - p.elapsed;
133 if (left < 0) left = 0;
134 if (left < p.fadeTime) {
135 a *= left / p.fadeTime;
137 Misc.
renderQuad(p.loc.x - p.size/2f, p.loc.y - p.size/2f, p.size, p.size, p.color, a);
void addParticle(float x, float y, float dx, float dy, float size, Color color, float maxDur, float fadeTime)
void addParticle(float x, float y, float dx, float dy, float size, Color color)
boolean isParticleOnFloor(QuadParticleData curr)
void addParticle(float x, float y, float dx, float dy, float size, Color color, float maxDur)
List< QuadParticleData > particles
void render(float alphaMult, boolean onFloor)
void addParticle(float x, float y, float dx, float dy)
void advance(float amount)
void addParticle(float x, float y, float dx, float dy, float size)
static void renderQuad(float x, float y, float width, float height, Color color, float alphaMult)
static float interpolate(float from, float to, float progress)