public Node SearchTree(Node CurrentNode, float x, float z){
    	
    	//find the center of this node
    	Point Center = new Point(CurrentNode.LowerLeft.X + ((CurrentNode.LowerRight.X - CurrentNode.LowerLeft.X)/2),0,CurrentNode.LowerRight.Z +((CurrentNode.UpperRight.Z - CurrentNode.LowerRight.Z)/2));
    	
    	//check east/west and north/south
    	boolean east = false;
    	boolean west = false;
    	boolean north = false;
    	boolean south = false;
    	if(x <= Center.X)	west = true;		//favor west
    	else 				east = true;
    	if(z >= Center.Z)	north = true;		//favor north
    	else 				south = true;
    	
    	//make sure that this node has children
    	if(CurrentNode.NorthEast != null && CurrentNode.NorthWest != null && CurrentNode.SouthEast != null && CurrentNode. SouthWest != null ){
    		//navigate to the correct node
        	if(north && east) SearchTree(CurrentNode.NorthEast, x,z);
        	if(north && west) SearchTree(CurrentNode.NorthWest, x,z);
        	if(south && east) SearchTree(CurrentNode.SouthEast, x,z);
        	if(south && west) SearchTree(CurrentNode.SouthWest, x,z);
    	}
    	else{
    		FoundNode = CurrentNode;
    	}
    	
    	return FoundNode;
    }