diff --git a/src/main/java/noppes/npcs/client/fx/CustomFX.java b/src/main/java/noppes/npcs/client/fx/CustomFX.java index eb6c74067..86d207fc4 100644 --- a/src/main/java/noppes/npcs/client/fx/CustomFX.java +++ b/src/main/java/noppes/npcs/client/fx/CustomFX.java @@ -29,10 +29,15 @@ public class CustomFX extends EntityFX { private static final ResourceLocation resource = new ResourceLocation("textures/particle/particles.png"); private float startX = 0, startY = 0, startZ = 0; - public float scale1 = 1.0F; - public float scale2 = 1.0F; - public float scaleRate = 1.0F; - public int scaleRateStart = 0; + public float scaleX1 = 1.0F; + public float scaleX2 = 1.0F; + public float scaleXRate = 1.0F; + public int scaleXRateStart = 0; + + public float scaleY1 = 1.0F; + public float scaleY2 = 1.0F; + public float scaleYRate = 1.0F; + public int scaleYRateStart = 0; public float alpha1 = 1.0F; public float alpha2 = 0; @@ -99,13 +104,19 @@ public class CustomFX extends EntityFX { customFX.particleGreen = (customFX.HEXColor >> 8 & 255) / 255f; customFX.particleBlue = (customFX.HEXColor & 255) / 255f; - customFX.scale1 = particle.scale1; - customFX.scale2 = particle.scale2; - customFX.scaleRate = Math.abs(particle.scaleRate); - customFX.scaleRateStart = particle.scaleRateStart; - customFX.particleScale = customFX.scale1; - if(customFX.scale1 > customFX.scale2) - customFX.scaleRate *= -1; + customFX.scaleX1 = particle.scaleX1; + customFX.scaleX2 = particle.scaleX2; + customFX.scaleXRate = Math.abs(particle.scaleXRate); + customFX.scaleXRateStart = particle.scaleXRateStart; + if(customFX.scaleX1 > customFX.scaleX2) + customFX.scaleXRate *= -1; + + customFX.scaleY1 = particle.scaleY1; + customFX.scaleY2 = particle.scaleY2; + customFX.scaleYRate = Math.abs(particle.scaleYRate); + customFX.scaleYRateStart = particle.scaleYRateStart; + if(customFX.scaleY1 > customFX.scaleY2) + customFX.scaleYRate *= -1; customFX.alpha1 = particle.alpha1; customFX.alpha2 = particle.alpha2; @@ -230,11 +241,17 @@ public class CustomFX extends EntityFX { startZ = (float)(entity.prevPosZ + (entity.posZ - entity.prevPosZ) * (double)partialTick); } - float scaleChange = this.scaleRate / (float)particleMaxAge; - if((this.scaleRate < 0 && particleScale+scaleChange < this.scale2) || (this.scaleRate > 0 && particleScale+scaleChange > this.scale2)) - particleScale = this.scale2; - else if(timeSinceStart >= this.scaleRateStart) - particleScale += scaleChange; + float scaleXChange = this.scaleXRate / (float)particleMaxAge; + if((this.scaleXRate < 0 && this.scaleX1+scaleXChange < this.scaleX2) || (this.scaleXRate > 0 && this.scaleX1+scaleXChange > this.scaleX2)) + this.scaleX1 = this.scaleX2; + else if(timeSinceStart >= this.scaleXRateStart) + this.scaleX1 += scaleXChange; + + float scaleYChange = this.scaleYRate / (float)particleMaxAge; + if((this.scaleYRate < 0 && this.scaleY1+scaleYChange < this.scaleY2) || (this.scaleYRate > 0 && this.scaleY1+scaleYChange > this.scaleY2)) + this.scaleY1 = this.scaleY2; + else if(timeSinceStart >= this.scaleYRateStart) + this.scaleY1 += scaleYChange; float alphaChange = this.alphaRate / (float)particleMaxAge; if((this.alphaRate < 0 && particleAlpha+alphaChange < this.alpha2) || (this.alphaRate > 0 && particleAlpha+alphaChange > this.alpha2)) @@ -275,7 +292,6 @@ public class CustomFX extends EntityFX { float v2 = v1 + (float)height/(float)totalHeight; EntityPlayer player = Minecraft.getMinecraft().thePlayer; - float renderScale = 0.1F * particleScale; float posX = (float)((prevPosX + (this.posX - prevPosX) * (double)partialTick) - interpPosX) + startX; float posY = (float)((prevPosY + (this.posY - prevPosY) * (double)partialTick) - interpPosY) + startY; float posZ = (float)((prevPosZ + (this.posZ - prevPosZ) * (double)partialTick) - interpPosZ) + startZ; @@ -286,7 +302,6 @@ public class CustomFX extends EntityFX { renderPosZ = startZ + posZ + this.posZ; GL11.glTranslated(posX,posY,posZ); - GL11.glScalef(renderScale, renderScale, renderScale); if(facePlayer) { GL11.glRotated(180 - player.rotationYaw, 0.0, 1.0, 0.0); GL11.glRotated(-player.rotationPitch + 90, 1.0, 0.0, 0.0); @@ -315,6 +330,8 @@ public class CustomFX extends EntityFX { textureXScale = (float) totalWidth/totalHeight; GL11.glScalef(1/textureXScale/2,1/textureXScale/2,1/textureXScale/2); } + textureXScale *= scaleX1/10.0F; + textureYScale *= scaleY1/10.0F; tessellator.setColorOpaque_F(1, 1, 1); tessellator.setColorRGBA_F(particleRed, particleGreen, particleBlue, particleAlpha); diff --git a/src/main/java/noppes/npcs/scripted/ScriptParticle.java b/src/main/java/noppes/npcs/scripted/ScriptParticle.java index d89a79912..8b37ee811 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptParticle.java +++ b/src/main/java/noppes/npcs/scripted/ScriptParticle.java @@ -22,9 +22,10 @@ public class ScriptParticle implements IParticle { public double x = 0,y = 0,z = 0; public double motionX = 0,motionY = 0,motionZ = 0; public float gravity = 0; - public float scale1 = 20.0f,scale2 = 20.0f,scaleRate = 0.0f; + public float scaleX1 = 20.0f,scaleX2 = 20.0f,scaleXRate = 0.0f; + public float scaleY1 = 20.0f,scaleY2 = 20.0f,scaleYRate = 0.0f; public float alpha1 = 1.0f,alpha2 = 1.0f,alphaRate = 0.0f; - public int scaleRateStart = 0, alphaRateStart = 0; + public int scaleXRateStart = 0, scaleYRateStart, alphaRateStart = 0; public float rotationX1 = 0; public float rotationX2 = 0; @@ -295,23 +296,49 @@ public class ScriptParticle implements IParticle { return alphaRateStart; } - public void setScale(float scale1, float scale2, float scaleRate, int scaleRateStart){ - this.scale1 = scale1; - this.scale2 = scale2; - this.scaleRate = scaleRate; - this.scaleRateStart = scaleRateStart; + public void setScale(float scale1, float scale2, float scaleRate, int scaleRateStart) { + this.scaleX1 = this.scaleY1 = scale1; + this.scaleX2 = this.scaleY2 = scale2; + this.scaleXRate = this.scaleYRate = scaleRate; + this.scaleXRateStart = this.scaleYRateStart = scaleRateStart; } - public float getScale1() { - return scale1; + + public void setScaleX(float scale1, float scale2, float scaleRate, int scaleRateStart){ + this.scaleX1 = scale1; + this.scaleX2 = scale2; + this.scaleXRate = scaleRate; + this.scaleXRateStart = scaleRateStart; } - public float getScale2() { - return scale2; + public float getScaleX1() { + return scaleX1; } - public float getScaleRate() { - return scaleRate; + public float getScaleX2() { + return scaleX2; } - public int getScaleRateStart() { - return scaleRateStart; + public float getScaleXRate() { + return scaleXRate; + } + public int getScaleXRateStart() { + return scaleXRateStart; + } + + public void setScaleY(float scale1, float scale2, float scaleRate, int scaleRateStart){ + this.scaleY1 = scale1; + this.scaleY2 = scale2; + this.scaleYRate = scaleRate; + this.scaleYRateStart = scaleRateStart; + } + public float getScaleY1() { + return scaleY1; + } + public float getScaleY2() { + return scaleY2; + } + public float getScaleYRate() { + return scaleYRate; + } + public int getScaleYRateStart() { + return scaleYRateStart; } public void setRotationX(float rotationX1, float rotationX2, float rotationXRate, int rotationXRateStart){ diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java index 8959ce132..4c6346aa1 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java @@ -68,10 +68,10 @@ public class ScriptEntity implements IEntity { particle.motionZ = motionZ; particle.gravity = gravity; - particle.scale1 = scale1; - particle.scale2 = scale2; - particle.scaleRate = scaleRate; - particle.scaleRateStart = scaleRateStart; + particle.scaleX1 = particle.scaleY1 = scale1; + particle.scaleX2 = particle.scaleY2 = scale2; + particle.scaleXRate = particle.scaleYRate = scaleRate; + particle.scaleXRateStart = particle.scaleYRateStart = scaleRateStart; particle.alpha1 = alpha1; particle.alpha2 = alpha2; @@ -124,10 +124,10 @@ public class ScriptEntity implements IEntity { particle.motionZ = motionZ; particle.gravity = gravity; - particle.scale1 = scale1; - particle.scale2 = scale2; - particle.scaleRate = scaleRate; - particle.scaleRateStart = scaleRateStart; + particle.scaleX1 = particle.scaleY1 = scale1; + particle.scaleX2 = particle.scaleY2 = scale2; + particle.scaleXRate = particle.scaleYRate = scaleRate; + particle.scaleXRateStart = particle.scaleYRateStart = scaleRateStart; particle.alpha1 = alpha1; particle.alpha2 = alpha2; @@ -164,10 +164,10 @@ public class ScriptEntity implements IEntity { particle.motionZ = motionZ; particle.gravity = gravity; - particle.scale1 = scale1; - particle.scale2 = scale2; - particle.scaleRate = scaleRate; - particle.scaleRateStart = scaleRateStart; + particle.scaleX1 = particle.scaleY1 = scale1; + particle.scaleX2 = particle.scaleY2 = scale2; + particle.scaleXRate = particle.scaleYRate = scaleRate; + particle.scaleXRateStart = particle.scaleYRateStart = scaleRateStart; NBTTagCompound compound = particle.writeToNBT(); compound.setInteger("EntityID", entityID);