package net.minecraft.client.renderer; import net.minecraft.client.renderer.chunk.IRenderChunkFactory; import net.minecraft.client.renderer.chunk.RenderChunk; import net.minecraft.util.BlockPos; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class ViewFrustum { protected final RenderGlobal field_178169_a; protected final World field_178167_b; protected int field_178168_c; protected int field_178165_d; protected int field_178166_e; public RenderChunk[] field_178164_f; private static final String __OBFID = "CL_00002531"; public ViewFrustum(World worldIn, int p_i46246_2_, RenderGlobal p_i46246_3_, IRenderChunkFactory p_i46246_4_) { this.field_178169_a = p_i46246_3_; this.field_178167_b = worldIn; this.func_178159_a(p_i46246_2_); this.func_178158_a(p_i46246_4_); } protected void func_178158_a(IRenderChunkFactory p_178158_1_) { int var2 = this.field_178165_d * this.field_178168_c * this.field_178166_e; this.field_178164_f = new RenderChunk[var2]; int var3 = 0; for (int var4 = 0; var4 < this.field_178165_d; ++var4) { for (int var5 = 0; var5 < this.field_178168_c; ++var5) { for (int var6 = 0; var6 < this.field_178166_e; ++var6) { int var7 = (var6 * this.field_178168_c + var5) * this.field_178165_d + var4; BlockPos var8 = new BlockPos(var4 * 16, var5 * 16, var6 * 16); this.field_178164_f[var7] = p_178158_1_.func_178602_a(this.field_178167_b, this.field_178169_a, var8, var3++); } } } } public void func_178160_a() { RenderChunk[] var1 = this.field_178164_f; int var2 = var1.length; for (int var3 = 0; var3 < var2; ++var3) { RenderChunk var4 = var1[var3]; var4.func_178566_a(); } } protected void func_178159_a(int p_178159_1_) { int var2 = p_178159_1_ * 2 + 1; this.field_178165_d = var2; this.field_178168_c = 16; this.field_178166_e = var2; } public void func_178163_a(double p_178163_1_, double p_178163_3_) { int var5 = MathHelper.floor_double(p_178163_1_) - 8; int var6 = MathHelper.floor_double(p_178163_3_) - 8; int var7 = this.field_178165_d * 16; for (int var8 = 0; var8 < this.field_178165_d; ++var8) { int var9 = this.func_178157_a(var5, var7, var8); for (int var10 = 0; var10 < this.field_178166_e; ++var10) { int var11 = this.func_178157_a(var6, var7, var10); for (int var12 = 0; var12 < this.field_178168_c; ++var12) { int var13 = var12 * 16; RenderChunk var14 = this.field_178164_f[(var10 * this.field_178168_c + var12) * this.field_178165_d + var8]; BlockPos var15 = new BlockPos(var9, var13, var11); if (!var15.equals(var14.func_178568_j())) { var14.func_178576_a(var15); } } } } } private int func_178157_a(int p_178157_1_, int p_178157_2_, int p_178157_3_) { int var4 = p_178157_3_ * 16; int var5 = var4 - p_178157_1_ + p_178157_2_ / 2; if (var5 < 0) { var5 -= p_178157_2_ - 1; } return var4 - var5 / p_178157_2_ * p_178157_2_; } public void func_178162_a(int p_178162_1_, int p_178162_2_, int p_178162_3_, int p_178162_4_, int p_178162_5_, int p_178162_6_) { int var7 = MathHelper.bucketInt(p_178162_1_, 16); int var8 = MathHelper.bucketInt(p_178162_2_, 16); int var9 = MathHelper.bucketInt(p_178162_3_, 16); int var10 = MathHelper.bucketInt(p_178162_4_, 16); int var11 = MathHelper.bucketInt(p_178162_5_, 16); int var12 = MathHelper.bucketInt(p_178162_6_, 16); for (int var13 = var7; var13 <= var10; ++var13) { int var14 = var13 % this.field_178165_d; if (var14 < 0) { var14 += this.field_178165_d; } for (int var15 = var8; var15 <= var11; ++var15) { int var16 = var15 % this.field_178168_c; if (var16 < 0) { var16 += this.field_178168_c; } for (int var17 = var9; var17 <= var12; ++var17) { int var18 = var17 % this.field_178166_e; if (var18 < 0) { var18 += this.field_178166_e; } int var19 = (var18 * this.field_178168_c + var16) * this.field_178165_d + var14; RenderChunk var20 = this.field_178164_f[var19]; var20.func_178575_a(true); } } } } protected RenderChunk func_178161_a(BlockPos p_178161_1_) { int var2 = MathHelper.bucketInt(p_178161_1_.getX(), 16); int var3 = MathHelper.bucketInt(p_178161_1_.getY(), 16); int var4 = MathHelper.bucketInt(p_178161_1_.getZ(), 16); if (var3 >= 0 && var3 < this.field_178168_c) { var2 %= this.field_178165_d; if (var2 < 0) { var2 += this.field_178165_d; } var4 %= this.field_178166_e; if (var4 < 0) { var4 += this.field_178166_e; } int var5 = (var4 * this.field_178168_c + var3) * this.field_178165_d + var2; return this.field_178164_f[var5]; } else { return null; } } }