diff options
| author | Aldrik Ramaekers <aldrik@amftech.nl> | 2023-12-25 11:15:53 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@amftech.nl> | 2023-12-25 11:15:53 +0100 |
| commit | ca7d3a7bb8a98c6dd5c00a6dca84921948f71229 (patch) | |
| tree | 04cc6e6a2e63b68eacecb1c5ade3ec17adffa7d7 /src | |
| parent | 4f8fe1f374c13c0f88c36ecd9cff2b0821dc1da5 (diff) | |
fix lightmap bruteforce
Diffstat (limited to 'src')
| -rw-r--r-- | src/map.c | 22 |
1 files changed, 17 insertions, 5 deletions
@@ -144,11 +144,23 @@ void load_mapdata_into_world() { } // Load lightmap - for (int y = 0; y < MAP_SIZE_Y; y++) { - for (int x = 0; x < MAP_SIZE_X; x++) { - for (int l = 0; l < MAX_LIGHT_EMITTERS; l++) { - light_emitter emitter = loaded_map.light_emitters[l]; - if (!emitter.active) continue; + for (int l = 0; l < MAX_LIGHT_EMITTERS; l++) { + light_emitter emitter = loaded_map.light_emitters[l]; + if (!emitter.active) continue; + + int ystart = emitter.position.y - emitter.range-2; + int xstart = emitter.position.x - emitter.range-2; + int yend = ystart + emitter.range*2 + 4; + int xend = xstart + emitter.range*2 + 4; + + if (ystart >= MAP_SIZE_Y) ystart = MAP_SIZE_Y-1; + if (xstart >= MAP_SIZE_X) xstart = MAP_SIZE_X-1; + if (yend >= MAP_SIZE_Y) yend = MAP_SIZE_Y-1; + if (xend >= MAP_SIZE_X) xend = MAP_SIZE_X-1; + + for (int y = ystart; y <= yend; y++) { + for (int x = xstart; x <= xend; x++) { + float dist_tl = distance_between_3f(emitter.position, (vec3f){x, y, loaded_map.heightmap[y][x].topleft}); float dist_tr = distance_between_3f(emitter.position, (vec3f){x, y, loaded_map.heightmap[y][x].topright}); float dist_bl = distance_between_3f(emitter.position, (vec3f){x, y, loaded_map.heightmap[y][x].bottomleft}); |
