diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderBlackHole.java b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderBlackHole.java index 0b68f840..d103886d 100644 --- a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderBlackHole.java +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderBlackHole.java @@ -3,6 +3,7 @@ package electroblob.wizardry.client.renderer.entity; import electroblob.wizardry.Wizardry; import electroblob.wizardry.client.renderer.RayHelper; import electroblob.wizardry.entity.construct.EntityBlackHole; +import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.*; import net.minecraft.client.renderer.entity.Render; @@ -49,11 +50,7 @@ public class RenderBlackHole extends Render { GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - int animationTicks = 10; - float age = entity.ticksExisted + partialTicks; - float s = age < animationTicks ? age/animationTicks : MathHelper.clamp((entity.lifetime - age) / animationTicks, 0, 1); - s = (float)Math.pow(s, 0.4); // Smooths the animation - + float s = WizardryUtilities.smoothScaleFactor(entity.lifetime, entity.ticksExisted, partialTicks, 10, 10); GlStateManager.scale(s, s, s); this.bindTexture(RAY_TEXTURE); diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderBubble.java b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderBubble.java index f4d021c7..fb8fa18c 100644 --- a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderBubble.java +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderBubble.java @@ -25,7 +25,7 @@ public class RenderBubble extends Render { } @Override - public void doRender(EntityBubble entity, double par2, double par4, double par6, float par8, float par9){ + public void doRender(EntityBubble entity, double x, double y, double z, float entityYaw, float partialTicks){ GlStateManager.pushMatrix(); GlStateManager.enableBlend(); @@ -39,7 +39,7 @@ public class RenderBubble extends Render { yOffset = rider.height / 2; } - GlStateManager.translate((float)par2, (float)par4 + yOffset, (float)par6); + GlStateManager.translate((float)x, (float)y + yOffset, (float)z); this.bindTexture(entity.isDarkOrb ? ENTRAPMENT_TEXTURE : PARTICLE_TEXTURES); float f6 = 1.0F; @@ -65,16 +65,15 @@ public class RenderBubble extends Render { GlStateManager.rotate(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); GlStateManager.rotate(yaw, 1.0F, 0.0F, 0.0F); - float f11 = 3.0F; - GlStateManager.scale(f11, f11, f11); + // Bubble 'bursts' so doesn't shrink when is disappears + float s = 3 * WizardryUtilities.smoothScaleFactor(entity.isDarkOrb ? entity.lifetime : -1, entity.ticksExisted, partialTicks, 10, 10); + GlStateManager.scale(s, s, s); double pixelwidth = (1.0d / 128); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder buffer = tessellator.getBuffer(); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); - // tessellator.setColorRGBA_I(k1, 128); - // buffer.normal(0.0F, 1.0F, 0.0F); if(entity.isDarkOrb){ buffer.pos(0.0F - f7, 0.0F - f8, 0.0D).tex(0, 1).endVertex(); diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderDecay.java b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderDecay.java index f1395a9e..3e79094e 100644 --- a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderDecay.java +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderDecay.java @@ -2,6 +2,7 @@ package electroblob.wizardry.client.renderer.entity; import electroblob.wizardry.Wizardry; import electroblob.wizardry.entity.construct.EntityDecay; +import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; @@ -24,7 +25,7 @@ public class RenderDecay extends Render { } @Override - public void doRender(EntityDecay entity, double par2, double par4, double par6, float par8, float par9){ + public void doRender(EntityDecay entity, double x, double y, double z, float entityYaw, float partialTicks){ GlStateManager.pushMatrix(); GlStateManager.enableBlend(); @@ -34,28 +35,26 @@ public class RenderDecay extends Render { float yOffset = 0; - GlStateManager.translate((float)par2, (float)par4 + yOffset, (float)par6); + GlStateManager.translate((float)x, (float)y + yOffset, (float)z); - this.bindTexture(TEXTURES[((EntityDecay)entity).textureIndex]); + this.bindTexture(TEXTURES[entity.textureIndex]); float f6 = 1.0F; float f7 = 0.5F; float f8 = 0.5F; GlStateManager.rotate(-90, 1, 0, 0); - float scale = 2 * Math.min(1, (float)(entity.lifetime - entity.ticksExisted) / 50f); - - GlStateManager.scale(scale, scale, scale); + float s = 2 * WizardryUtilities.smoothScaleFactor(entity.lifetime, entity.ticksExisted, partialTicks, 10, 50); + GlStateManager.scale(s, s, s); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder buffer = tessellator.getBuffer(); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); - // tessellator.setColorRGBA_I(k1, 128); - // buffer.normal(0.0F, 1.0F, 0.0F); - buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex(); - buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex(); - buffer.pos((double)(f6 - f7), (double)(1.0F - f8), 0.01).tex(1, 0).endVertex(); - buffer.pos((double)(0.0F - f7), (double)(1.0F - f8), 0.01).tex(0, 0).endVertex(); + + buffer.pos(0.0F - f7, 0.0F - f8, 0.01).tex(0, 1).endVertex(); + buffer.pos(f6 - f7, 0.0F - f8, 0.01).tex(1, 1).endVertex(); + buffer.pos(f6 - f7, 1.0F - f8, 0.01).tex(1, 0).endVertex(); + buffer.pos(0.0F - f7, 1.0F - f8, 0.01).tex(0, 0).endVertex(); tessellator.draw(); diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderFireRing.java b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderFireRing.java index 7115aa04..be7ef3b8 100644 --- a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderFireRing.java +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderFireRing.java @@ -1,6 +1,7 @@ package electroblob.wizardry.client.renderer.entity; import electroblob.wizardry.entity.construct.EntityFireRing; +import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; @@ -18,7 +19,7 @@ import org.lwjgl.opengl.GL11; public class RenderFireRing extends Render { private final ResourceLocation texture; - private float scale = 1.0f; + private float scale; public RenderFireRing(RenderManager renderManager, ResourceLocation texture, float scale){ super(renderManager); @@ -27,7 +28,7 @@ public class RenderFireRing extends Render { } @Override - public void doRender(EntityFireRing entity, double par2, double par4, double par6, float par8, float par9){ + public void doRender(EntityFireRing entity, double x, double y, double z, float entityYaw, float partialTicks){ GlStateManager.pushMatrix(); GlStateManager.enableBlend(); @@ -37,7 +38,7 @@ public class RenderFireRing extends Render { float yOffset = 0; - GlStateManager.translate((float)par2, (float)par4 + yOffset, (float)par6); + GlStateManager.translate(x, y + yOffset, z); this.bindTexture(texture); float f6 = 1.0F; @@ -46,15 +47,16 @@ public class RenderFireRing extends Render { GlStateManager.rotate(-90, 1, 0, 0); - GlStateManager.scale(scale, scale, scale); + float s = WizardryUtilities.smoothScaleFactor(entity.lifetime, entity.ticksExisted, partialTicks, 10, 10); + GlStateManager.scale(scale * s, scale * s, scale * s); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder buffer = tessellator.getBuffer(); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); - buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex(); - buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex(); - buffer.pos((double)(f6 - f7), (double)(1.0F - f8), 0.01).tex(1, 0).endVertex(); - buffer.pos((double)(0.0F - f7), (double)(1.0F - f8), 0.01).tex(0, 0).endVertex(); + buffer.pos(0.0F - f7, 0.0F - f8, 0.01).tex(0, 1).endVertex(); + buffer.pos(f6 - f7, 0.0F - f8, 0.01).tex(1, 1).endVertex(); + buffer.pos(f6 - f7, 1.0F - f8, 0.01).tex(1, 0).endVertex(); + buffer.pos(0.0F - f7, 1.0F - f8, 0.01).tex(0, 0).endVertex(); tessellator.draw(); @@ -65,114 +67,108 @@ public class RenderFireRing extends Render { // Fire - GlStateManager.disableLighting(); - TextureAtlasSprite icon = Minecraft.getMinecraft().getBlockRendererDispatcher() - .getModelForState(Blocks.FIRE.getDefaultState()).getParticleTexture(); - int sides = 16; - float height = 1.0f; + if(s >= 1){ + GlStateManager.disableLighting(); + TextureAtlasSprite icon = Minecraft.getMinecraft().getBlockRendererDispatcher() + .getModelForState(Blocks.FIRE.getDefaultState()).getParticleTexture(); + int sides = 16; + float height = 1.0f; - for(int k = 0; k < sides; k++){ + for(int k = 0; k < sides; k++){ - GlStateManager.pushMatrix(); - GlStateManager.translate((float)par2, (float)par4 + 0.05f, (float)par6); - float f1 = 1.0f; - GlStateManager.scale(f1, f1, f1); - float f2 = 0.5F; - float f3 = 0.0F; - float f4 = 0.2f; - float f5 = (float)(entity.posY - entity.getEntityBoundingBox().minY); - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - float f61 = 0.0F; - int i = 0; + GlStateManager.pushMatrix(); + GlStateManager.translate((float)x, (float)y + 0.05f, (float)z); + float f1 = 1.0f; + GlStateManager.scale(f1, f1, f1); + float f2 = 0.5F; + float f3 = 0.0F; + float f4 = 0.2f; + float f5 = (float)(entity.posY - entity.getEntityBoundingBox().minY); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + float f61 = 0.0F; + int i = 0; - GlStateManager.rotate((360f / (float)sides) * k, 0, 1, 0); - GlStateManager.translate(0, 0, -2.3f); + GlStateManager.rotate((360f / (float)sides) * k, 0, 1, 0); + GlStateManager.translate(0, 0, -2.3f); - buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); + buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); - while(f4 > 0.0F){ + while(f4 > 0.0F){ - this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); - float f71 = icon.getMinU(); - float f81 = icon.getMinV(); - float f9 = icon.getMaxU(); - float f10 = icon.getMaxV(); + this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); + float f71 = icon.getMinU(); + float f81 = icon.getMinV(); + float f9 = icon.getMaxU(); + float f10 = icon.getMaxV(); - if(i / 2 % 2 == 0){ - float f11 = f9; - f9 = f71; - f71 = f11; + if(i / 2 % 2 == 0){ + float f11 = f9; + f9 = f71; + f71 = f11; + } + + buffer.pos((f2 - f3), (0.0F - f5), f61).tex(f9, f10).endVertex(); + buffer.pos((-f2 - f3), (0.0F - f5), f61).tex(f71, f10).endVertex(); + buffer.pos((-f2 - f3), (height - f5), f61).tex(f71, f81).endVertex(); + buffer.pos((f2 - f3), (height - f5), f61).tex(f9, f81).endVertex(); + f4 -= 0.45F; + f5 -= 0.45F; + f2 *= 0.9F; + f61 += 0.03F; + ++i; } - buffer.pos((double)(f2 - f3), (double)(0.0F - f5), (double)f61).tex((double)f9, (double)f10) - .endVertex(); - buffer.pos((double)(-f2 - f3), (double)(0.0F - f5), (double)f61).tex((double)f71, (double)f10) - .endVertex(); - buffer.pos((double)(-f2 - f3), (double)(height - f5), (double)f61).tex((double)f71, (double)f81) - .endVertex(); - buffer.pos((double)(f2 - f3), (double)(height - f5), (double)f61).tex((double)f9, (double)f81) - .endVertex(); - f4 -= 0.45F; - f5 -= 0.45F; - f2 *= 0.9F; - f61 += 0.03F; - ++i; + tessellator.draw(); + GlStateManager.popMatrix(); } - tessellator.draw(); - GlStateManager.popMatrix(); - } + for(int k = 0; k < sides; k++){ - for(int k = 0; k < sides; k++){ + GlStateManager.pushMatrix(); + GlStateManager.translate((float)x, (float)y + 0.05f, (float)z); + float f1 = 1.0f; + GlStateManager.scale(f1, f1, f1); + float f2 = 0.5F; + float f3 = 0.0F; + float f4 = 0.2f; + float f5 = (float)(entity.posY - entity.getEntityBoundingBox().minY); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + float f61 = 0.0F; + int i = 0; - GlStateManager.pushMatrix(); - GlStateManager.translate((float)par2, (float)par4 + 0.05f, (float)par6); - float f1 = 1.0f; - GlStateManager.scale(f1, f1, f1); - float f2 = 0.5F; - float f3 = 0.0F; - float f4 = 0.2f; - float f5 = (float)(entity.posY - entity.getEntityBoundingBox().minY); - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - float f61 = 0.0F; - int i = 0; + GlStateManager.rotate((360f / (float)sides) * k, 0, 1, 0); + GlStateManager.translate(0, 0, 2.3f); - GlStateManager.rotate((360f / (float)sides) * k, 0, 1, 0); - GlStateManager.translate(0, 0, 2.3f); + buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); - buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); + while(f4 > 0.0F){ - while(f4 > 0.0F){ + this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); + float f71 = icon.getMinU(); + float f81 = icon.getMinV(); + float f9 = icon.getMaxU(); + float f10 = icon.getMaxV(); - this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); - float f71 = icon.getMinU(); - float f81 = icon.getMinV(); - float f9 = icon.getMaxU(); - float f10 = icon.getMaxV(); + if(i / 2 % 2 == 0){ + float f11 = f9; + f9 = f71; + f71 = f11; + } - if(i / 2 % 2 == 0){ - float f11 = f9; - f9 = f71; - f71 = f11; + buffer.pos((f2 - f3), (0.0F - f5), f61).tex(f9, f10).endVertex(); + buffer.pos((-f2 - f3), (0.0F - f5), f61).tex(f71, f10).endVertex(); + buffer.pos((-f2 - f3), (height - f5), f61).tex(f71, f81).endVertex(); + buffer.pos((f2 - f3), (height - f5), f61).tex(f9, f81).endVertex(); + f4 -= 0.45F; + f5 -= 0.45F; + f2 *= 0.9F; + f61 += 0.03F; + ++i; } - buffer.pos((double)(f2 - f3), (double)(0.0F - f5), (double)f61).tex((double)f9, (double)f10) - .endVertex(); - buffer.pos((double)(-f2 - f3), (double)(0.0F - f5), (double)f61).tex((double)f71, (double)f10) - .endVertex(); - buffer.pos((double)(-f2 - f3), (double)(height - f5), (double)f61).tex((double)f71, (double)f81) - .endVertex(); - buffer.pos((double)(f2 - f3), (double)(height - f5), (double)f61).tex((double)f9, (double)f81) - .endVertex(); - f4 -= 0.45F; - f5 -= 0.45F; - f2 *= 0.9F; - f61 += 0.03F; - ++i; + tessellator.draw(); + GlStateManager.popMatrix(); } - - tessellator.draw(); - GlStateManager.popMatrix(); } GlStateManager.enableLighting(); diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderSigil.java b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderSigil.java index bd965498..86f5ca97 100644 --- a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderSigil.java +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderSigil.java @@ -3,6 +3,7 @@ package electroblob.wizardry.client.renderer.entity; import electroblob.wizardry.entity.construct.EntityHealAura; import electroblob.wizardry.entity.construct.EntityMagicConstruct; import electroblob.wizardry.util.AllyDesignationSystem; +import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; @@ -18,7 +19,7 @@ import org.lwjgl.opengl.GL11; public class RenderSigil extends Render { private final ResourceLocation texture; - private float scale = 1.0f; + private float scale; private boolean invisibleToEnemies; public RenderSigil(RenderManager renderManager, ResourceLocation texture, float scale, boolean invisibleToEnemies){ @@ -29,7 +30,7 @@ public class RenderSigil extends Render { } @Override - public void doRender(EntityMagicConstruct entity, double par2, double par4, double par6, float par8, float par9){ + public void doRender(EntityMagicConstruct entity, double x, double y, double z, float entityYaw, float partialTicks){ // Makes the sigil invisible to enemies of the player that created it if(this.invisibleToEnemies){ @@ -48,7 +49,7 @@ public class RenderSigil extends Render { float yOffset = 0; - GlStateManager.translate((float)par2, (float)par4 + yOffset, (float)par6); + GlStateManager.translate((float)x, (float)y + yOffset, (float)z); this.bindTexture(texture); float f6 = 1.0F; @@ -60,17 +61,17 @@ public class RenderSigil extends Render { // Healing aura rotates slowly if(entity instanceof EntityHealAura) GlStateManager.rotate(entity.ticksExisted / 3.0f, 0, 0, 1); - GlStateManager.scale(scale, scale, scale); + float s = WizardryUtilities.smoothScaleFactor(entity.lifetime, entity.ticksExisted, partialTicks, 10, 10); + GlStateManager.scale(scale * s, scale * s, scale * s); Tessellator tessellator = Tessellator.getInstance(); BufferBuilder buffer = tessellator.getBuffer(); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); - // tessellator.setColorRGBA_I(k1, 128); - // buffer.normal(0.0F, 1.0F, 0.0F); - buffer.pos((double)(0.0F - f7), (double)(0.0F - f8), 0.01).tex(0, 1).endVertex(); - buffer.pos((double)(f6 - f7), (double)(0.0F - f8), 0.01).tex(1, 1).endVertex(); - buffer.pos((double)(f6 - f7), (double)(1.0F - f8), 0.01).tex(1, 0).endVertex(); - buffer.pos((double)(0.0F - f7), (double)(1.0F - f8), 0.01).tex(0, 0).endVertex(); + + buffer.pos(0.0F - f7, 0.0F - f8, 0.01).tex(0, 1).endVertex(); + buffer.pos(f6 - f7, 0.0F - f8, 0.01).tex(1, 1).endVertex(); + buffer.pos(f6 - f7, 1.0F - f8, 0.01).tex(1, 0).endVertex(); + buffer.pos(0.0F - f7, 1.0F - f8, 0.01).tex(0, 0).endVertex(); tessellator.draw(); diff --git a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderZombieSpawner.java b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderZombieSpawner.java index 8b534787..48fd96d6 100644 --- a/src/main/java/electroblob/wizardry/client/renderer/entity/RenderZombieSpawner.java +++ b/src/main/java/electroblob/wizardry/client/renderer/entity/RenderZombieSpawner.java @@ -12,7 +12,6 @@ import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import org.lwjgl.opengl.GL11; @@ -43,13 +42,10 @@ public class RenderZombieSpawner extends Render { // The visible bit GlStateManager.pushMatrix(); - int animationTicks = 10; - float age = entity.ticksExisted + partialTicks; - float s = age < animationTicks ? age/animationTicks : MathHelper.clamp((entity.lifetime - age) / animationTicks, 0, 1); - s = (float)Math.pow(s, 0.4); // Smooths the animation - + float s = WizardryUtilities.smoothScaleFactor(entity.lifetime, entity.ticksExisted, partialTicks, 10, 10); GlStateManager.scale(s, s, s); - GlStateManager.rotate(age * 2, 0, 1, 0); + + GlStateManager.rotate((entity.ticksExisted + partialTicks) * 2, 0, 1, 0); this.bindTexture(TEXTURE); diff --git a/src/main/java/electroblob/wizardry/client/renderer/tileentity/RenderMagicLight.java b/src/main/java/electroblob/wizardry/client/renderer/tileentity/RenderMagicLight.java index 81d93c13..24af8489 100644 --- a/src/main/java/electroblob/wizardry/client/renderer/tileentity/RenderMagicLight.java +++ b/src/main/java/electroblob/wizardry/client/renderer/tileentity/RenderMagicLight.java @@ -6,6 +6,7 @@ import electroblob.wizardry.item.ISpellCastingItem; import electroblob.wizardry.item.ItemArtefact; import electroblob.wizardry.registry.WizardryItems; import electroblob.wizardry.tileentity.TileEntityMagicLight; +import electroblob.wizardry.util.WizardryUtilities; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.*; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; @@ -42,12 +43,7 @@ public class RenderMagicLight extends TileEntitySpecialRenderer