public static bool isNeighbour(NavigationMeshPoly poly1, NavigationMeshPoly poly2) { foreach (WorldVector3 vec1 in poly1.Vertices) { foreach (WorldVector3 vec2 in poly2.Vertices) { if (WorldVector3.@equals(vec1, vec2)) { return(true); } } } return(false); }
//Method to get the directional angle of two WorldVector3, also know as "gon" public static double directionalAngle(WorldVector3 vec1, WorldVector3 vec2) { if ((vec2.Y - vec1.Y) > 0 && (vec2.X - vec1.X) > 0) { return(radianToGon(Math.Atan((vec2.Y - vec1.Y) / (vec2.X - vec1.X)))); } if ( (vec2.Y - vec1.Y) > 0 && (vec2.X - vec1.X) < 0 || (vec2.Y - vec1.Y) < 0 && (vec2.X - vec1.X) < 0) { return(radianToGon(Math.Atan((vec2.Y - vec1.Y) / (vec2.X - vec1.X))) + 200); } if ((vec2.Y - vec1.Y) < 0 && (vec2.X - vec1.X) > 0) { return(radianToGon(Math.Atan((vec2.Y - vec1.Y) / (vec2.X - vec1.X))) + 400); } return(radianToGon(Math.Atan((vec2.Y - vec1.Y) / (vec2.X - vec1.X)))); }
//Method to check if two WorldVelctor3s are equal public static bool equals(WorldVector3 vec1, WorldVector3 vec2) { return(vec1.X == vec2.X && vec1.Y == vec2.Y && vec1.Z == vec2.Z); }