case WM_LBUTTONDOWN:
{
int x,z;
float dx,dz;
xpos = LOWORD(lParam); // horizontal position of cursor
ypos = HIWORD(lParam); // vertical position of cursor
dx=(float)fx/DIMX;
dz=(float)fy/DIMZ;
x=xpos/dx;
z=ypos/dz;
xmouse=x;
zmouse=z;
if( (x>=0) && (x<(DIMX-1)) && (z>=0) && (z<(DIMZ-1)) )
{
buf[x][z].y=8;
}
return 0;
}
void ProcessWave()
{
float temp;
for (int i=1; i<MAPY-1; i++)
for (int j=1; j<MAPX-1; j++)
{
temp = ((wavemap[cmap][i-1][j] +
wavemap[cmap][i+1][j] +
wavemap[cmap][i][j-1] +
wavemap[cmap][i][j+1] +
wavemap[cmap][i-1][j+1] +
wavemap[cmap][i+1][j+1] +
wavemap[cmap][i-1][j-1] +
wavemap[cmap][i+1][j-1]) / 4) -
wavemap[nmap][i][j];
temp = temp - (temp / damp);
//if ((temp < 0.01) && (temp > -0.01)) temp = 0;
if (temp < 0.01) temp = 0;
wavemap[nmap][i][j] = temp;
}
}
void InvertWaveMap()
{
int temp = cmap;
cmap = nmap;
nmap = temp;
}
void DrawWave()
{
int i, j;
glDisable(GL_TEXTURE_2D);
glColor4f(1, 1, 1, 0.1);
glBegin(GL_TRIANGLES);
for (i=0; i<MAPY-1; i++)
{
for (j=0; j<MAPX-1; j++)
{
glVertex3f(j*2, wavemap[cmap][i][j], i*2);
glVertex3f((j+1)*2, wavemap[cmap][i+1][j+1], (i+1)*2);
glVertex3f(j*2, wavemap[cmap][i+1][j], (i+1)*2);
glVertex3f(j*2, wavemap[cmap][i][j], i*2);
glVertex3f((j+1)*2, wavemap[cmap][i][j+1], i*2);
glVertex3f((j+1)*2, wavemap[cmap][i+1][j+1], (i+1)*2);
}
}
glEnd();
glEnable(GL_TEXTURE_2D);
}