001 package net.minecraft.src; 002 003 public class PathPoint 004 { 005 /** The x coordinate of this point */ 006 public final int xCoord; 007 008 /** The y coordinate of this point */ 009 public final int yCoord; 010 011 /** The z coordinate of this point */ 012 public final int zCoord; 013 014 /** A hash of the coordinates used to identify this point */ 015 private final int hash; 016 017 /** The index of this point in its assigned path */ 018 int index = -1; 019 020 /** The distance along the path to this point */ 021 float totalPathDistance; 022 023 /** The linear distance to the next point */ 024 float distanceToNext; 025 026 /** The distance to the target */ 027 float distanceToTarget; 028 029 /** The point preceding this in its assigned path */ 030 PathPoint previous; 031 032 /** Indicates this is the origin */ 033 public boolean isFirst = false; 034 035 public PathPoint(int par1, int par2, int par3) 036 { 037 this.xCoord = par1; 038 this.yCoord = par2; 039 this.zCoord = par3; 040 this.hash = makeHash(par1, par2, par3); 041 } 042 043 public static int makeHash(int par0, int par1, int par2) 044 { 045 return par1 & 255 | (par0 & 32767) << 8 | (par2 & 32767) << 24 | (par0 < 0 ? Integer.MIN_VALUE : 0) | (par2 < 0 ? 32768 : 0); 046 } 047 048 /** 049 * Returns the linear distance to another path point 050 */ 051 public float distanceTo(PathPoint par1PathPoint) 052 { 053 float var2 = (float)(par1PathPoint.xCoord - this.xCoord); 054 float var3 = (float)(par1PathPoint.yCoord - this.yCoord); 055 float var4 = (float)(par1PathPoint.zCoord - this.zCoord); 056 return MathHelper.sqrt_float(var2 * var2 + var3 * var3 + var4 * var4); 057 } 058 059 public float func_75832_b(PathPoint par1PathPoint) 060 { 061 float var2 = (float)(par1PathPoint.xCoord - this.xCoord); 062 float var3 = (float)(par1PathPoint.yCoord - this.yCoord); 063 float var4 = (float)(par1PathPoint.zCoord - this.zCoord); 064 return var2 * var2 + var3 * var3 + var4 * var4; 065 } 066 067 public boolean equals(Object par1Obj) 068 { 069 if (!(par1Obj instanceof PathPoint)) 070 { 071 return false; 072 } 073 else 074 { 075 PathPoint var2 = (PathPoint)par1Obj; 076 return this.hash == var2.hash && this.xCoord == var2.xCoord && this.yCoord == var2.yCoord && this.zCoord == var2.zCoord; 077 } 078 } 079 080 public int hashCode() 081 { 082 return this.hash; 083 } 084 085 /** 086 * Returns true if this point has already been assigned to a path 087 */ 088 public boolean isAssigned() 089 { 090 return this.index >= 0; 091 } 092 093 public String toString() 094 { 095 return this.xCoord + ", " + this.yCoord + ", " + this.zCoord; 096 } 097 }