added colored floor

This commit is contained in:
Alexandre 2024-07-01 22:28:01 +02:00
parent 95926f322b
commit 4be82de50c
4 changed files with 16 additions and 5 deletions

BIN
a.out

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -240,7 +240,7 @@ let draw_cube_p (cube : pt_3d array) screen_wd screen_ht fov r g b =
set_line_width 5;
for i = 0 to 5 do
if draw_faces.(i) then begin
let light = max (0.) (1. -. (distances.(i)) /. 7.5) in
let light = max (0.) (1. -. (distances.(i)) /. 12.5) in
let face_R = int_of_float ((float_of_int r) *. light)
and face_G = int_of_float ((float_of_int g) *. light)
and face_B = int_of_float ((float_of_int b) *. light) in
@ -513,16 +513,16 @@ let chunkify laby sz =
let cubes = Hashtbl.create 300 in
let add_to_table w h d cw ch cd =
let add_to_table w h d cw ch cd r g b=
(*Printf.printf "(%d, %d, %d) (%d, %d, %d)\n" w h d cw ch cd;*)
match Hashtbl.find_opt cubes (cw, ch, cd) with
| None -> begin
let dyna = dyn_create {cube = create_cube (w*sz) (h*sz) (d*sz) sz; red = 220; green = 220; blue = 220} in
let dyna = dyn_create {cube = create_cube (w*sz) (h*sz) (d*sz) sz; red = r; green = g; blue = b} in
Hashtbl.add cubes (cw, ch, cd) dyna
end
| Some dyna -> begin
Hashtbl.remove cubes (cw, ch, cd);
dyn_append dyna {cube = create_cube (w*sz) (h*sz) (d*sz) sz; red = 220; green = 220; blue = 220};
dyn_append dyna {cube = create_cube (w*sz) (h*sz) (d*sz) sz; red = r; green = g; blue = b};
Hashtbl.add cubes (cw, ch, cd) dyna
end
in
@ -534,7 +534,7 @@ let chunkify laby sz =
for i = -chunk_dist to chunk_dist do
for j = -chunk_dist to chunk_dist do
for k = -chunk_dist to chunk_dist do
add_to_table w h d ((w*sz)/chunk_size + i) ((h*sz)/chunk_size + j) ((d*sz)/chunk_size + k)
add_to_table w h d ((w*sz)/chunk_size + i) ((h*sz)/chunk_size + j) ((d*sz)/chunk_size + k) 220 220 220
done
done
done
@ -543,6 +543,17 @@ let chunkify laby sz =
done
done
done;
for w = -10 to 10 do
for d = -10 to 10 do
for i = -chunk_dist to chunk_dist do
for j = -chunk_dist to chunk_dist do
for k = -chunk_dist to chunk_dist do
add_to_table w (-1) d ((w*sz)/chunk_size + i) (((-1)*sz)/chunk_size + j) ((d*sz)/chunk_size + k) 256 256 32
done
done
done
done
done ;
cubes ;;
let cheesify (laby : tile array array array) =