The great particle refactoring part 1: Introducing ParticleBuilder!
Adds ParticleBuilder to replace the particle spawning methods in the proxies, and changes all particle spawning to use the builder except for in the spell classes, which are to be reorganised first.
This commit is contained in:
@@ -9,66 +9,33 @@ import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class ParticleSparkle extends ParticleCustomTexture {
|
||||
|
||||
/* I have now figured out what particle factories are for: they separate out the individual uses of the varargs
|
||||
* parameter in spawnParticle so they are kept with the particle class. For my purposes, it would be easier to do
|
||||
* that in the particle spawning method itself. */
|
||||
|
||||
private static final ResourceLocation TEXTURE = new ResourceLocation(Wizardry.MODID,
|
||||
"textures/particle/sparkle_particles.png");
|
||||
|
||||
// NOTE: Uncomment once 2.1.0 is released
|
||||
// private final float initialRed;
|
||||
// private final float initialGreen;
|
||||
// private final float initialBlue;
|
||||
// Implementation of colour fading (perhaps these belong in ParticleWizardry?)
|
||||
private float initialRed;
|
||||
private float initialGreen;
|
||||
private float initialBlue;
|
||||
|
||||
// TODO: Assign these via the constructors, as part of the refactoring for particle parameters.
|
||||
// NOTE: Uncomment once 2.1.0 is released
|
||||
// private final float fadeRed = 1;
|
||||
// private final float fadeGreen = 1;
|
||||
// private final float fadeBlue = 0;
|
||||
|
||||
public ParticleSparkle(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g,
|
||||
float b){
|
||||
super(world, x, y, z, vx, vy, vz);
|
||||
this.setRBGColorF(r, g, b);
|
||||
// NOTE: Uncomment once 2.1.0 is released
|
||||
// initialRed = r;
|
||||
// initialGreen = g;
|
||||
// initialBlue = b;
|
||||
public ParticleSparkle(World world, double x, double y, double z){
|
||||
super(world, x, y, z);
|
||||
this.setRBGColorF(1, 1, 1);
|
||||
this.particleMaxAge = 48 + this.rand.nextInt(12);
|
||||
}
|
||||
|
||||
public ParticleSparkle(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g,
|
||||
float b, int maxAge){
|
||||
super(world, x, y, z, vx, vy, vz, maxAge);
|
||||
this.setRBGColorF(r, g, b);
|
||||
// NOTE: Uncomment once 2.1.0 is released
|
||||
// initialRed = r;
|
||||
// initialGreen = g;
|
||||
// initialBlue = b;
|
||||
}
|
||||
|
||||
public ParticleSparkle(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g,
|
||||
float b, boolean doGravity){
|
||||
this(world, x, y, z, vx, vy, vz, r, g, b);
|
||||
this.particleGravity = doGravity ? 1 : 0;
|
||||
}
|
||||
|
||||
public ParticleSparkle(World world, double x, double y, double z, double vx, double vy, double vz, float r, float g,
|
||||
float b, int maxAge, boolean doGravity){
|
||||
this(world, x, y, z, vx, vy, vz, r, g, b, maxAge);
|
||||
this.particleGravity = doGravity ? 1 : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(){
|
||||
this.setParticleTextureIndex(rand.nextInt(16));
|
||||
this.particleScale *= 0.75f;
|
||||
this.particleGravity = 0;
|
||||
this.canCollide = false;
|
||||
this.fullBrightness = true;
|
||||
this.shaded = false;
|
||||
}
|
||||
|
||||
// Overridden to set the initial colour values
|
||||
@Override
|
||||
public void setRBGColorF(float r, float g, float b){
|
||||
super.setRBGColorF(r, g, b);
|
||||
initialRed = r;
|
||||
initialGreen = g;
|
||||
initialBlue = b;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getTexture(){
|
||||
return TEXTURE;
|
||||
@@ -88,17 +55,20 @@ public class ParticleSparkle extends ParticleCustomTexture {
|
||||
public void onUpdate(){
|
||||
|
||||
super.onUpdate();
|
||||
|
||||
// Fading
|
||||
if(this.particleAge > this.particleMaxAge / 2){
|
||||
this.setAlphaF(
|
||||
1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / (float)this.particleMaxAge);
|
||||
}
|
||||
// Colour fading TODO Uncomment once 2.1.0 is released
|
||||
// float ageFraction = (float)this.particleAge / (float)this.particleMaxAge;
|
||||
// this.setRBGColorF(this.initialRed + (this.fadeRed - this.initialRed)*ageFraction,
|
||||
// this.initialGreen + (this.fadeGreen - this.initialGreen)*ageFraction,
|
||||
// this.initialBlue + (this.fadeBlue - this.initialBlue)*ageFraction);
|
||||
|
||||
// Colour fading
|
||||
float ageFraction = (float)this.particleAge / (float)this.particleMaxAge;
|
||||
// No longer uses setRBGColorF because that method now also sets the initial values
|
||||
this.particleRed = this.initialRed + (this.fadeRed - this.initialRed)*ageFraction;
|
||||
this.particleGreen = this.initialGreen + (this.fadeGreen - this.initialGreen)*ageFraction;
|
||||
this.particleBlue = this.initialBlue + (this.fadeBlue - this.initialBlue)*ageFraction;
|
||||
|
||||
this.setParticleTextureIndex((this.particleAge * 11)/this.particleMaxAge);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user