Trying to make color fade in particles but its not finished yet
This commit is contained in:
parent
c70fb12b38
commit
3ad54c931d
3 changed files with 76 additions and 30 deletions
|
|
@ -38,11 +38,10 @@ public class Particles extends Entity{
|
||||||
public float life = 1.0f;
|
public float life = 1.0f;
|
||||||
public float size = 20.0f;
|
public float size = 20.0f;
|
||||||
|
|
||||||
private static float colors[][]= // Rainbow Of Colors
|
private static float colors[][][]= // Rainbow Of Colors
|
||||||
{
|
{
|
||||||
{1.0f,0.5f,0.5f},{1.0f,0.75f,0.5f},{1.0f,1.0f,0.5f},{0.75f,1.0f,0.5f},
|
{{1.0f,0.5f,0.5f},{1.0f,1.0f,0.5f}},
|
||||||
{0.5f,1.0f,0.5f},{0.5f,1.0f,0.75f},{0.5f,1.0f,1.0f},{0.5f,0.75f,1.0f},
|
{{1.0f,1.0f,0.5f},{1.0f,0.5f,0.5f}}
|
||||||
{0.5f,0.5f,1.0f},{0.75f,0.5f,1.0f},{1.0f,0.5f,1.0f},{1.0f,0.5f,0.75f}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private int maxParticles = 1000;
|
private int maxParticles = 1000;
|
||||||
|
|
@ -60,8 +59,8 @@ public class Particles extends Entity{
|
||||||
public Particles(String name){
|
public Particles(String name){
|
||||||
super(name);
|
super(name);
|
||||||
this.texture = TextureLoader.getTextureLoaderInstance().getTexture("data/particle.bmp");
|
this.texture = TextureLoader.getTextureLoaderInstance().getTexture("data/particle.bmp");
|
||||||
reset();
|
|
||||||
setDefault();
|
setDefault();
|
||||||
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDefault() {
|
private void setDefault() {
|
||||||
|
|
@ -76,27 +75,8 @@ public class Particles extends Entity{
|
||||||
life = 1.0f;
|
life = 1.0f;
|
||||||
size = 20.0f;
|
size = 20.0f;
|
||||||
regenerate = true;
|
regenerate = true;
|
||||||
|
|
||||||
init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
|
||||||
for (int i=0;i<maxParticles;i++){ // Initials All The Textures
|
|
||||||
particle[i].active = true; // Make All The Particles Active
|
|
||||||
particle[i].life = life; // Give All The Particles Full Life
|
|
||||||
particle[i].fade = ((float)(Math.random() * 100.0)) / 1000.0f + 0.003f; // Random Fade Speed
|
|
||||||
particle[i].r = colors[i * (colors.length / maxParticles)][0]; // Select Red Rainbow Color
|
|
||||||
particle[i].g = colors[i * (colors.length / maxParticles)][1]; // Select Red Rainbow Color
|
|
||||||
particle[i].b = colors[i * (colors.length / maxParticles)][2]; // Select Red Rainbow Color
|
|
||||||
particle[i].xi = ((float)((Math.random() * MaxSpeedX)) - (MaxSpeedX/2)) * 10.0f; // Random Speed On X Axis
|
|
||||||
particle[i].yi = ((float)((Math.random() * MaxSpeedY)) - (MaxSpeedY/2)) * 10.0f; // Random Speed On Y Axis
|
|
||||||
particle[i].zi = ((float)((Math.random() * MaxSpeedZ)) - (MaxSpeedZ/2)) * 10.0f; // Random Speed On Z Axis
|
|
||||||
particle[i].xg = pullForceX; // Set Horizontal Pull To Zero
|
|
||||||
particle[i].yg = pullForceY; // Set Vertical Pull Downward
|
|
||||||
particle[i].zg = pullForceZ; // Set Pull On Z Axis To Zero
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the number of particles
|
* Set the number of particles
|
||||||
* WARNING this will reset all the particles!!
|
* WARNING this will reset all the particles!!
|
||||||
|
|
@ -119,6 +99,29 @@ public class Particles extends Entity{
|
||||||
particle[i] = new Particle();
|
particle[i] = new Particle();
|
||||||
particle[i].life = -1.0f;
|
particle[i].life = -1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init() {
|
||||||
|
for (int i=0;i<maxParticles;i++){ // Initials All The Textures
|
||||||
|
particle[i].active = true; // Make All The Particles Active
|
||||||
|
particle[i].life = life; // Give All The Particles Full Life
|
||||||
|
particle[i].fade = ((float)(Math.random() * 100.0)) / 1000.0f + 0.003f; // Random Fade Speed
|
||||||
|
particle[i].r = colors[i * (colors.length / maxParticles)][0][0]; // Select Red Rainbow Color
|
||||||
|
particle[i].g = colors[i * (colors.length / maxParticles)][0][1]; // Select Red Rainbow Color
|
||||||
|
particle[i].b = colors[i * (colors.length / maxParticles)][0][2]; // Select Red Rainbow Color
|
||||||
|
particle[i].colorId = i * (colors.length / maxParticles);
|
||||||
|
particle[i].xi = ((float)((Math.random() * MaxSpeedX)) - (MaxSpeedX/2)) * 10.0f; // Random Speed On X Axis
|
||||||
|
particle[i].yi = ((float)((Math.random() * MaxSpeedY)) - (MaxSpeedY/2)) * 10.0f; // Random Speed On Y Axis
|
||||||
|
particle[i].zi = ((float)((Math.random() * MaxSpeedZ)) - (MaxSpeedZ/2)) * 10.0f; // Random Speed On Z Axis
|
||||||
|
particle[i].xg = pullForceX; // Set Horizontal Pull To Zero
|
||||||
|
particle[i].yg = pullForceY; // Set Vertical Pull Downward
|
||||||
|
particle[i].zg = pullForceZ; // Set Pull On Z Axis To Zero
|
||||||
|
particle[i].x = getLocation().getX(); // Center On X Axis
|
||||||
|
particle[i].y = getLocation().getY(); // Center On Y Axis
|
||||||
|
particle[i].z = getLocation().getZ(); // Center On Z Axis
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -181,7 +184,22 @@ public class Particles extends Entity{
|
||||||
particle[i].zi += particle[i].zg; // Take Pull On Z Axis Into Account
|
particle[i].zi += particle[i].zg; // Take Pull On Z Axis Into Account
|
||||||
particle[i].life -= particle[i].fade; // Reduce Particles Life By 'Fade'
|
particle[i].life -= particle[i].fade; // Reduce Particles Life By 'Fade'
|
||||||
|
|
||||||
|
// Fading to another color
|
||||||
|
if(particle[i].r < colors[particle[i].colorId][1][0])
|
||||||
|
particle[i].r += 0.2f;
|
||||||
|
if(particle[i].g < colors[particle[i].colorId][1][1])
|
||||||
|
particle[i].g += 0.2f;
|
||||||
|
if(particle[i].b < colors[particle[i].colorId][1][2])
|
||||||
|
particle[i].b += 0.2f;
|
||||||
|
|
||||||
|
if(particle[i].r > colors[particle[i].colorId][1][0])
|
||||||
|
particle[i].r -= 0.2f;
|
||||||
|
if(particle[i].g > colors[particle[i].colorId][1][1])
|
||||||
|
particle[i].g -= 0.2f;
|
||||||
|
if(particle[i].b > colors[particle[i].colorId][1][2])
|
||||||
|
particle[i].b -= 0.2f;
|
||||||
|
|
||||||
|
|
||||||
if (particle[i].life < 0.0f) { // If Particle Is Burned Out
|
if (particle[i].life < 0.0f) { // If Particle Is Burned Out
|
||||||
particle[i].active = true; // Make All The Particles Active
|
particle[i].active = true; // Make All The Particles Active
|
||||||
particle[i].life = life; // Give It New Life
|
particle[i].life = life; // Give It New Life
|
||||||
|
|
@ -195,10 +213,11 @@ public class Particles extends Entity{
|
||||||
particle[i].yi = yspeed + ((float)((Math.random() * MaxSpeedY)) - (MaxSpeedY/2)) * 10.0f; // Y Axis Speed And Direction
|
particle[i].yi = yspeed + ((float)((Math.random() * MaxSpeedY)) - (MaxSpeedY/2)) * 10.0f; // Y Axis Speed And Direction
|
||||||
particle[i].zi = ((float)((Math.random() * MaxSpeedZ)) - (MaxSpeedZ/2)) * 10.0f; // Z Axis Speed And Direction
|
particle[i].zi = ((float)((Math.random() * MaxSpeedZ)) - (MaxSpeedZ/2)) * 10.0f; // Z Axis Speed And Direction
|
||||||
|
|
||||||
particle[i].r = colors[col][0]; // Select Red From Color Table
|
particle[i].r = colors[col][0][0]; // Select Red From Color Table
|
||||||
particle[i].g = colors[col][1]; // Select Green From Color Table
|
particle[i].g = colors[col][0][1]; // Select Green From Color Table
|
||||||
particle[i].b = colors[col][2]; // Select Blue From Color Table
|
particle[i].b = colors[col][0][2]; // Select Blue From Color Table
|
||||||
|
particle[i].colorId = col;
|
||||||
|
|
||||||
particle[i].xg = pullForceX; // Set Horizontal Pull To Zero
|
particle[i].xg = pullForceX; // Set Horizontal Pull To Zero
|
||||||
particle[i].yg = pullForceY; // Set Vertical Pull Downward
|
particle[i].yg = pullForceY; // Set Vertical Pull Downward
|
||||||
particle[i].zg = pullForceZ; // Set Pull On Z Axis To Zero
|
particle[i].zg = pullForceZ; // Set Pull On Z Axis To Zero
|
||||||
|
|
@ -258,6 +277,7 @@ class Particle { // Particles Structure
|
||||||
public boolean active; // Active (Yes/No)
|
public boolean active; // Active (Yes/No)
|
||||||
public float life; // Particle Life
|
public float life; // Particle Life
|
||||||
public float fade; // Fade Speed
|
public float fade; // Fade Speed
|
||||||
|
public int colorId;
|
||||||
|
|
||||||
public float r; // Red Value
|
public float r; // Red Value
|
||||||
public float g; // Green Value
|
public float g; // Green Value
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,10 @@ public class ParticlesTest extends LWJGLGameWindow{
|
||||||
|
|
||||||
protected void update() {
|
protected void update() {
|
||||||
super.update();
|
super.update();
|
||||||
|
if(ptf.respawn){
|
||||||
|
p.reset();
|
||||||
|
ptf.respawn = false;
|
||||||
|
}
|
||||||
p.life = ptf.life.getValue();
|
p.life = ptf.life.getValue();
|
||||||
p.MaxSpeedX = ptf.maxSpeedX.getValue();
|
p.MaxSpeedX = ptf.maxSpeedX.getValue();
|
||||||
p.MaxSpeedY = ptf.maxSpeedY.getValue();
|
p.MaxSpeedY = ptf.maxSpeedY.getValue();
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import javax.swing.JCheckBox;
|
||||||
import java.awt.FlowLayout;
|
import java.awt.FlowLayout;
|
||||||
import javax.swing.JSlider;
|
import javax.swing.JSlider;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JButton;
|
||||||
|
|
||||||
public class ParticlesTestFrame{
|
public class ParticlesTestFrame{
|
||||||
|
|
||||||
|
|
@ -33,6 +34,8 @@ public class ParticlesTestFrame{
|
||||||
private JLabel jLabel4 = null;
|
private JLabel jLabel4 = null;
|
||||||
private JLabel jLabel5 = null;
|
private JLabel jLabel5 = null;
|
||||||
public JSlider size = null;
|
public JSlider size = null;
|
||||||
|
public boolean respawn = false;
|
||||||
|
private JButton jButtonRespawn = null;
|
||||||
/**
|
/**
|
||||||
* This method initializes jFrame
|
* This method initializes jFrame
|
||||||
*
|
*
|
||||||
|
|
@ -41,7 +44,7 @@ public class ParticlesTestFrame{
|
||||||
public JFrame getJFrame() {
|
public JFrame getJFrame() {
|
||||||
if (jFrame == null) {
|
if (jFrame == null) {
|
||||||
jFrame = new JFrame();
|
jFrame = new JFrame();
|
||||||
jFrame.setSize(new Dimension(281, 627));
|
jFrame.setSize(new Dimension(281, 662));
|
||||||
jFrame.setTitle("ParticleTest");
|
jFrame.setTitle("ParticleTest");
|
||||||
jFrame.setContentPane(getJContentPane());
|
jFrame.setContentPane(getJContentPane());
|
||||||
}
|
}
|
||||||
|
|
@ -90,6 +93,7 @@ public class ParticlesTestFrame{
|
||||||
jContentPane.add(getLife(), null);
|
jContentPane.add(getLife(), null);
|
||||||
jContentPane.add(jLabel5, null);
|
jContentPane.add(jLabel5, null);
|
||||||
jContentPane.add(getSize(), null);
|
jContentPane.add(getSize(), null);
|
||||||
|
jContentPane.add(getJButtonRespawn(), null);
|
||||||
}
|
}
|
||||||
return jContentPane;
|
return jContentPane;
|
||||||
}
|
}
|
||||||
|
|
@ -358,4 +362,22 @@ public class ParticlesTestFrame{
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method initializes jButtonRespawn
|
||||||
|
*
|
||||||
|
* @return javax.swing.JButton
|
||||||
|
*/
|
||||||
|
private JButton getJButtonRespawn() {
|
||||||
|
if (jButtonRespawn == null) {
|
||||||
|
jButtonRespawn = new JButton();
|
||||||
|
jButtonRespawn.setText("Force Respawn");
|
||||||
|
jButtonRespawn.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent e) {
|
||||||
|
respawn = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return jButtonRespawn;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue