summaryrefslogtreecommitdiff
path: root/src/map.c
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2023-12-25 11:15:53 +0100
committerAldrik Ramaekers <aldrik@amftech.nl>2023-12-25 11:15:53 +0100
commitca7d3a7bb8a98c6dd5c00a6dca84921948f71229 (patch)
tree04cc6e6a2e63b68eacecb1c5ade3ec17adffa7d7 /src/map.c
parent4f8fe1f374c13c0f88c36ecd9cff2b0821dc1da5 (diff)
fix lightmap bruteforce
Diffstat (limited to 'src/map.c')
-rw-r--r--src/map.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/map.c b/src/map.c
index fd4092c..6eba31a 100644
--- a/src/map.c
+++ b/src/map.c
@@ -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});