Merge pull request #1858 from FlansMods/master

Hook for Camera Angles, Including Roll
This commit is contained in:
LexManos 2015-06-21 11:19:26 -07:00
commit 8bb34107f1
2 changed files with 57 additions and 11 deletions

View file

@ -25,7 +25,35 @@
GlStateManager.func_179114_b(entity.field_70126_B + (entity.field_70177_z - entity.field_70126_B) * p_78467_1_ + 180.0F, 0.0F, -1.0F, 0.0F);
GlStateManager.func_179114_b(entity.field_70127_C + (entity.field_70125_A - entity.field_70127_C) * p_78467_1_, -1.0F, 0.0F, 0.0F);
}
@@ -1081,7 +1075,7 @@
@@ -630,17 +624,20 @@
if (!this.field_78531_r.field_71474_y.field_74325_U)
{
- GlStateManager.func_179114_b(entity.field_70127_C + (entity.field_70125_A - entity.field_70127_C) * p_78467_1_, 1.0F, 0.0F, 0.0F);
-
+ float yaw = entity.field_70126_B + (entity.field_70177_z - entity.field_70126_B) * p_78467_1_ + 180.0F;
+ float pitch = entity.field_70127_C + (entity.field_70125_A - entity.field_70127_C) * p_78467_1_;
+ float roll = 0.0F;
if (entity instanceof EntityAnimal)
{
EntityAnimal entityanimal = (EntityAnimal)entity;
- GlStateManager.func_179114_b(entityanimal.field_70758_at + (entityanimal.field_70759_as - entityanimal.field_70758_at) * p_78467_1_ + 180.0F, 0.0F, 1.0F, 0.0F);
+ yaw = entityanimal.field_70758_at + (entityanimal.field_70759_as - entityanimal.field_70758_at) * p_78467_1_ + 180.0F;
}
- else
- {
- GlStateManager.func_179114_b(entity.field_70126_B + (entity.field_70177_z - entity.field_70126_B) * p_78467_1_ + 180.0F, 0.0F, 1.0F, 0.0F);
- }
+ Block block = ActiveRenderInfo.func_180786_a(this.field_78531_r.field_71441_e, entity, p_78467_1_);
+ net.minecraftforge.client.event.EntityViewRenderEvent.CameraSetup event = new net.minecraftforge.client.event.EntityViewRenderEvent.CameraSetup(this, entity, block, p_78467_1_, yaw, pitch, roll);
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event);
+ GlStateManager.func_179114_b(event.roll, 0.0F, 0.0F, 1.0F);
+ GlStateManager.func_179114_b(event.pitch, 1.0F, 0.0F, 0.0F);
+ GlStateManager.func_179114_b(event.yaw, 0.0F, 1.0F, 0.0F);
}
GlStateManager.func_179109_b(0.0F, -f1, 0.0F);
@@ -1081,7 +1078,7 @@
try
{
@ -34,7 +62,7 @@
}
catch (Throwable throwable)
{
@@ -1145,7 +1139,7 @@
@@ -1145,7 +1142,7 @@
if (this.field_78531_r.field_71442_b.func_178889_l() == WorldSettings.GameType.SPECTATOR)
{
@ -43,7 +71,7 @@
}
else
{
@@ -1296,7 +1290,9 @@
@@ -1296,7 +1293,9 @@
GlStateManager.func_179094_E();
RenderHelper.func_74519_b();
this.field_78531_r.field_71424_I.func_76318_c("entities");
@ -53,7 +81,7 @@
RenderHelper.func_74518_a();
this.func_175072_h();
GlStateManager.func_179128_n(5888);
@@ -1308,6 +1304,7 @@
@@ -1308,6 +1307,7 @@
entityplayer = (EntityPlayer)entity;
GlStateManager.func_179118_c();
this.field_78531_r.field_71424_I.func_76318_c("outline");
@ -61,7 +89,7 @@
renderglobal.func_72731_b(entityplayer, this.field_78531_r.field_71476_x, 0, p_175068_2_);
GlStateManager.func_179141_d();
}
@@ -1321,6 +1318,7 @@
@@ -1321,6 +1321,7 @@
entityplayer = (EntityPlayer)entity;
GlStateManager.func_179118_c();
this.field_78531_r.field_71424_I.func_76318_c("outline");
@ -69,7 +97,7 @@
renderglobal.func_72731_b(entityplayer, this.field_78531_r.field_71476_x, 0, p_175068_2_);
GlStateManager.func_179141_d();
}
@@ -1373,6 +1371,16 @@
@@ -1373,6 +1374,16 @@
renderglobal.func_174977_a(EnumWorldBlockLayer.TRANSLUCENT, (double)p_175068_2_, p_175068_1_, entity);
}
@ -86,7 +114,7 @@
GlStateManager.func_179103_j(7424);
GlStateManager.func_179132_a(true);
GlStateManager.func_179089_o();
@@ -1385,8 +1393,12 @@
@@ -1385,8 +1396,12 @@
this.func_180437_a(renderglobal, p_175068_2_, p_175068_1_);
}
@ -99,7 +127,7 @@
if (this.field_175074_C)
{
GlStateManager.func_179086_m(256);
@@ -1498,6 +1510,13 @@
@@ -1498,6 +1513,13 @@
protected void func_78474_d(float p_78474_1_)
{
@ -113,7 +141,7 @@
float f1 = this.field_78531_r.field_71441_e.func_72867_j(p_78474_1_);
if (f1 > 0.0F)
@@ -1835,6 +1854,13 @@
@@ -1835,6 +1857,13 @@
this.field_175081_S = f8;
}
@ -127,7 +155,7 @@
GlStateManager.func_179082_a(this.field_175080_Q, this.field_175082_R, this.field_175081_S, 0.0F);
}
@@ -1854,6 +1880,10 @@
@@ -1854,6 +1883,10 @@
Block block = ActiveRenderInfo.func_180786_a(this.field_78531_r.field_71441_e, entity, p_78468_2_);
float f1;
@ -138,7 +166,7 @@
if (entity instanceof EntityLivingBase && ((EntityLivingBase)entity).func_70644_a(Potion.field_76440_q))
{
f1 = 5.0F;
@@ -1931,6 +1961,7 @@
@@ -1931,6 +1964,7 @@
GlStateManager.func_179102_b(f1 * 0.05F);
GlStateManager.func_179153_c(Math.min(f1, 192.0F) * 0.5F);
}

View file

@ -78,4 +78,22 @@ public abstract class EntityViewRenderEvent extends Event
this.blue = blue;
}
}
/**
* Event that allows mods to alter the angles of the player's camera. Mainly useful for applying roll.
*/
public static class CameraSetup extends EntityViewRenderEvent
{
public float yaw;
public float pitch;
public float roll;
public CameraSetup(EntityRenderer renderer, Entity entity, Block block, double renderPartialTicks, float yaw, float pitch, float roll)
{
super(renderer, entity, block, renderPartialTicks);
this.yaw = yaw;
this.pitch = pitch;
this.roll = roll;
}
}
}