function average_height(var av_x, var av_y, var vert_x, var vert_y)
{ var av_height = 0;
var side_x;
var side_y;
var calc_tl_x;
var calc_tl_y;
var calc_br_x;
var calc_br_y;
var calc_face_tri;
var calc_my_tri;
var calc_avheight_x;
var calc_avheight_y;
var calc_ratio;
var calc_length1;
var calc_length2;
vert_x = 0;
vert_y = 0;
while(1)
{ if(av_x > water_vertices_data[vert_x][vert_y][VERT_X])
{ break;
}
else vert_x++;
}
while(1)
{ if(av_y < water_vertices_data[vert_x][vert_y][VERT_Y])
{ break;
}
else vert_y++;
}
calc_tl_x = water_vertices_data[vert_x][vert_y-1][VERT_X];
calc_tl_y = water_vertices_data[vert_x][vert_y-1][VERT_Y];
calc_br_x = water_vertices_data[vert_x-1][vert_y][VERT_X];
calc_br_y = water_vertices_data[vert_x-1][vert_y][VERT_Y];
calc_face_tri = (calc_tl_x-calc_tl_y)-(calc_br_x-calc_br_y);
calc_my_tri = (calc_tl_x-calc_tl_y)-(av_x-av_y);
if(calc_my_tri > calc_face_tri )
{ side_x = av_x - av_y + water_vertices_data[vert_x-1][vert_y][VERT_Y];
calc_ratio = (side_x - water_vertices_data[vert_x-1][vert_y][VERT_X])/(water_vertices_data[vert_x][vert_y][VERT_X] - water_vertices_data[vert_x-1][vert_y][VERT_X]);
calc_avheight_x = (water_vertices_data[vert_x][vert_y][VERT_Z] - water_vertices_data[vert_x-1][vert_y][VERT_Z])*calc_ratio + water_vertices_data[vert_x-1][vert_y][VERT_Z];
side_y = av_y - av_x + water_vertices_data[vert_x][vert_y-1][VERT_X];
calc_ratio = (side_y - water_vertices_data[vert_x][vert_y-1][VERT_Y])/(water_vertices_data[vert_x][vert_y][VERT_Y] - water_vertices_data[vert_x][vert_y-1][VERT_Y]);
calc_avheight_y = (water_vertices_data[vert_x][vert_y][VERT_Z] - water_vertices_data[vert_x][vert_y-1][VERT_Z])*calc_ratio + water_vertices_data[vert_x][vert_y-1][VERT_Z];
calc_length1 = vec_dist(vector(side_x,water_vertices_data[vert_x-1][vert_y][VERT_Y], 0),vector(water_vertices_data[vert_x][vert_y-1][VERT_X], side_y, 0 ));
calc_length2 = vec_dist(vector(side_x,water_vertices_data[vert_x-1][vert_y][VERT_Y], 0),vector(av_x, av_y, 0 ));
calc_ratio = calc_length2/calc_length1;
av_height = -(calc_avheight_x-calc_avheight_y)*calc_ratio + calc_avheight_x;
}
else
{ side_x = av_x - av_y + water_vertices_data[vert_x-1][vert_y-1][VERT_Y];
calc_ratio = (side_x - water_vertices_data[vert_x-1][vert_y-1][VERT_X])/(water_vertices_data[vert_x][vert_y-1][VERT_X] - water_vertices_data[vert_x-1][vert_y-1][VERT_X]);
calc_avheight_x = (water_vertices_data[vert_x][vert_y-1][VERT_Z] - water_vertices_data[vert_x-1][vert_y-1][VERT_Z])*calc_ratio + water_vertices_data[vert_x-1][vert_y-1][VERT_Z];
side_y = av_y - av_x + water_vertices_data[vert_x-1][vert_y-1][VERT_X];
calc_ratio = (side_y - water_vertices_data[vert_x-1][vert_y-1][VERT_Y])/(water_vertices_data[vert_x-1][vert_y][VERT_Y] - water_vertices_data[vert_x-1][vert_y-1][VERT_Y]);
calc_avheight_y = (water_vertices_data[vert_x-1][vert_y][VERT_Z] - water_vertices_data[vert_x-1][vert_y-1][VERT_Z])*calc_ratio + water_vertices_data[vert_x-1][vert_y-1][VERT_Z];
//effect(p_debris,1,vector(water_vertices_data[vert_x][vert_y][VERT_X], side_y, calc_avheight_y),vector(0,0,10));
calc_length1 = vec_dist(vector(side_x,water_vertices_data[vert_x-1][vert_y-1][VERT_Y], 0),vector(water_vertices_data[vert_x-1][vert_y-1][VERT_X], side_y, 0 ));
calc_length2 = vec_dist(vector(side_x,water_vertices_data[vert_x-1][vert_y-1][VERT_Y], 0),vector(av_x, av_y, 0 ));
calc_ratio = calc_length2/calc_length1;
av_height = -(calc_avheight_x-calc_avheight_y)*calc_ratio + calc_avheight_x;
}
return av_height;
}