Skip to content

Commit

Permalink
Fix dagger rotation center and allow more flexibility for that stuff.
Browse files Browse the repository at this point in the history
  • Loading branch information
bonii-xx committed Aug 31, 2014
1 parent 3f53641 commit 0e07f2c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 6 deletions.
12 changes: 10 additions & 2 deletions src/main/java/tconstruct/client/ToolCoreRenderer.java
Expand Up @@ -17,9 +17,17 @@
public class ToolCoreRenderer implements IItemRenderer
{
private final boolean isEntity;
private final boolean noEntityTranslation;

public ToolCoreRenderer() { this(false, false); }

public ToolCoreRenderer(boolean isEntity) {
this(isEntity, false);
}

public ToolCoreRenderer(boolean isEntity, boolean noEntityTranslation) {
this.isEntity = isEntity;
this.noEntityTranslation = noEntityTranslation;
}

@Override
Expand All @@ -31,7 +39,6 @@ public boolean handleRenderType (ItemStack item, ItemRenderType type)
switch (type)
{
case ENTITY:
//GL11.glTranslatef(-0.0625F, -0.0625F, 0F);
return true;
case EQUIPPED:
GL11.glTranslatef(0.03f, 0F, -0.09375F);
Expand Down Expand Up @@ -162,7 +169,8 @@ public void renderItem (ItemRenderType type, ItemStack item, Object... data)
GL11.glTranslatef(0, -4 / 16f, 0);
break;
case ENTITY:
GL11.glTranslatef(-0.5f, 0f, depth);
if(!noEntityTranslation)
GL11.glTranslatef(-0.5f, 0f, depth); // correction of the rotation point when items lie on the ground
break;
default:
}
Expand Down
Expand Up @@ -6,15 +6,18 @@
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.ForgeHooksClient;

import net.minecraftforge.client.IItemRenderer;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

import tconstruct.client.ToolCoreRenderer;
import tconstruct.tools.entity.DaggerEntity;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
Expand All @@ -23,6 +26,7 @@
public class DaggerRenderCustom extends Render
{
private static RenderItem renderer = new RenderItem();
private static ToolCoreRenderer toolCoreRenderer = new ToolCoreRenderer(true, true);
private Random random = new Random();

public DaggerRenderCustom()
Expand All @@ -41,21 +45,28 @@ public void doRenderItem (DaggerEntity dagger, double par2, double par4, double
GL11.glPushMatrix();
GL11.glTranslatef((float) par2, (float) par4, (float) par6);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);

GL11.glRotatef(dagger.prevRotationYaw + (dagger.rotationYaw - dagger.prevRotationYaw) * par9 - 90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(dagger.prevRotationPitch + (dagger.rotationPitch - dagger.prevRotationPitch) * par9 - 45.0F, 0.0F, 0.0F, 1.0F);

float rotation = dagger.prevRotationPitch + (dagger.rotationPitch - dagger.prevRotationPitch) * par9;
GL11.glRotatef(dagger.rotationYaw + 90, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(rotation * 15, 0.0F, 0.0F, 1.0F);

GL11.glTranslatef(-0.25f, -0.25f, 0f); // translate to the middle. This makes it so that the dagger rotates around its center
float shake = dagger.arrowShake - par9;
if (shake > 0.0F)
GL11.glRotatef(-MathHelper.sin(shake * 3) * shake, 0, 0, 1);
GL11.glTranslatef(-7 / 16f, -8 / 16f, -1 / 32f);
GL11.glTranslatef(0.5f, 0f, -1 / 16f); // compensates the translation in the toolcorerenderer
//GL11.glTranslatef(-7 / 16f, -8 / 16f, -1 / 32f);
float scale = 1.35f;
GL11.glScalef(scale, scale, scale);
ForgeHooksClient.renderEntityItem(null, item, 0, 0, random, renderManager.renderEngine, field_147909_c, 1);

/* begin hardcoded regular item rendering */
// see ForgeHooksClient.renderEntityItem
renderManager.renderEngine.bindTexture(TextureMap.locationItemsTexture);
GL11.glScalef(0.5F, 0.5F, 0.5F);
toolCoreRenderer.renderItem(IItemRenderer.ItemRenderType.ENTITY, item);
/* end hardcoded regular item rendering */

GL11.glDisable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
}
Expand Down

0 comments on commit 0e07f2c

Please sign in to comment.