2059 for (int y2=0;y2<=scaled_square_size;y2++) 2060 { 2061 my1 = my + y2; 2062 2063 for (int x2=0;x2<=scaled_square_size;x2++) 2064 { 2065 mx1 = mx + x2; 2066 2067 float q = qualities_interp[y2][x2]; 2068 calc_heights[y2][x2] = GetTerrainHeight(mx1, my1, base_quality, q); 2069 2070 is_seen = NumUnitsSeeingSquare[my1 << mipmap_level][mx1 << mipmap_level] > 0 ? 1 : 0; 2071 is_lighted = pWorld->NumLightsOnSquare[my1 << mipmap_level][mx1 << mipmap_level] > 0 ? 1 : 0; 2072 2073 calc_colours[y2][x2].r = terrainMaterialAmbientDiffuse[is_lighted][is_seen][0]; 2074 calc_colours[y2][x2].g = terrainMaterialAmbientDiffuse[is_lighted][is_seen][1]; 2075 calc_colours[y2][x2].b = terrainMaterialAmbientDiffuse[is_lighted][is_seen][2]; 2076 calc_colours[y2][x2].a = terrainMaterialAmbientDiffuse[is_lighted][is_seen][3]; 2077 2078 SphereNormal temp; 2079 GetTerrainNormal(mx1, my1, base_quality, q, temp); 2080 2081 float S = sin(temp.phi); 2082 calc_normals[y2][x2].x = S * cos(temp.theta); 2083 calc_normals[y2][x2].y = S * sin(temp.theta); 2084 calc_normals[y2][x2].z = cos(temp.phi); 2085 2086 GetTerrainTexCoord(mx1, my1, base_quality, q, calc_texcoords[y2][x2]); 2087 } 2088 }