001 package net.minecraft.client.renderer;
002
003 import cpw.mods.fml.relauncher.Side;
004 import cpw.mods.fml.relauncher.SideOnly;
005 import java.util.Comparator;
006 import net.minecraft.entity.EntityLiving;
007
008 @SideOnly(Side.CLIENT)
009 public class RenderSorter implements Comparator
010 {
011 /** The entity (usually the player) that the camera is inside. */
012 private EntityLiving baseEntity;
013
014 public RenderSorter(EntityLiving par1EntityLiving)
015 {
016 this.baseEntity = par1EntityLiving;
017 }
018
019 public int doCompare(WorldRenderer par1WorldRenderer, WorldRenderer par2WorldRenderer)
020 {
021 if (par1WorldRenderer.isInFrustum && !par2WorldRenderer.isInFrustum)
022 {
023 return 1;
024 }
025 else if (par2WorldRenderer.isInFrustum && !par1WorldRenderer.isInFrustum)
026 {
027 return -1;
028 }
029 else
030 {
031 double var3 = (double)par1WorldRenderer.distanceToEntitySquared(this.baseEntity);
032 double var5 = (double)par2WorldRenderer.distanceToEntitySquared(this.baseEntity);
033 return var3 < var5 ? 1 : (var3 > var5 ? -1 : (par1WorldRenderer.chunkIndex < par2WorldRenderer.chunkIndex ? 1 : -1));
034 }
035 }
036
037 public int compare(Object par1Obj, Object par2Obj)
038 {
039 return this.doCompare((WorldRenderer)par1Obj, (WorldRenderer)par2Obj);
040 }
041 }