From d69b55246c129ee676377117ecc621e3f7fe23da Mon Sep 17 00:00:00 2001 From: tslil clingman <> Date: Mon, 18 Oct 2021 21:31:24 -0400 Subject: Working on correct verts then horizs then... ordering and edge cases --- src/main.zig | 89 +++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 55 insertions(+), 34 deletions(-) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index 47f89a7..8b77440 100644 --- a/src/main.zig +++ b/src/main.zig @@ -49,40 +49,61 @@ pub fn main() !void { var map = try level.Map.new(16, 16, &gpa.allocator); defer map.deinit(); - var y: u32 = 5; - while (y < 10) : (y += 1) { - // HACK - const vert_coords0 = [_][2]f32{ - .{ 0.10, 0.10 }, - .{ 0.90, 0.10 }, - .{ 0.90, 0.90 }, - .{ 0.10, 0.90 }, - }; - var verts = try std.BoundedArray([2]f32, level.Layer.MAX_VERTS).fromSlice(vert_coords0[0..]); - var layer = level.Layer{ .height = 0.5, .vertices = verts }; - try map.cells.items[07 * 16 + y].lower_layers.append(layer); - - const vert_coords1 = [_][2]f32{ - .{ 0.75, 0.5 }, - .{ 0.72838634, 0.60168415 }, - .{ 0.66728264, 0.68578625 }, - .{ 0.57725424, 0.7377641 }, - .{ 0.47386786, 0.74863046 }, - .{ 0.375, 0.71650636 }, - .{ 0.29774573, 0.6469463 }, - .{ 0.2554631, 0.5519779 }, - .{ 0.25546312, 0.44802207 }, - .{ 0.29774576, 0.35305366 }, - .{ 0.37500003, 0.28349364 }, - .{ 0.47386792, 0.25136954 }, - .{ 0.5772543, 0.26223588 }, - .{ 0.6672827, 0.3142138 }, - .{ 0.7283864, 0.39831588 }, - }; - verts = try std.BoundedArray([2]f32, level.Layer.MAX_VERTS).fromSlice(vert_coords1[0..]); - - layer = level.Layer{ .height = 1, .vertices = verts, .vertical_texture = 1, .horizontal_texture = 2, .vertical_texture_scale = 2 }; - try map.cells.items[07 * 16 + y].lower_layers.append(layer); + // floor + const square_coords = [_][2]f32{ + .{ 0.00, 0.00 }, + .{ 1.00, 0.00 }, + .{ 1.00, 1.00 }, + .{ 0.00, 1.00 }, + }; + + var y: u32 = 0; + while (y < 16) : (y += 1) { + var x: usize = 0; + while (x < 16) : (x += 1) { + var floor_verts = try std.BoundedArray([2]f32, level.Layer.MAX_VERTS).fromSlice(square_coords[0..]); + try map.cells.items[y * 16 + x].lower_layers.append(level.Layer{ .height = 0, .vertices = floor_verts }); + if (y == 0 or y == 15 or x == 0) { + try map.cells.items[y * 16 + x].lower_layers.append(level.Layer{ .height = 2, .vertices = floor_verts }); + } else { + if (x == 15) + try map.cells.items[y * 16 + x].lower_layers.append(level.Layer{ .height = 2, .vertices = floor_verts, .vertical_texture = 2 }); + } + if (y == 7 and x >= 5 and x <= 10) { + const vert_coords0 = [_][2]f32{ + .{ 0.10, 0.10 }, + .{ 0.90, 0.10 }, + .{ 0.90, 0.90 }, + .{ 0.10, 0.90 }, + }; + var verts = try std.BoundedArray([2]f32, level.Layer.MAX_VERTS).fromSlice(vert_coords0[0..]); + var layer = level.Layer{ .height = 0.5, .vertices = verts, .vertical_texture = 3, .horizontal_texture = 1 }; + + try map.cells.items[y * 16 + x].lower_layers.append(layer); + + const vert_coords1 = [_][2]f32{ + .{ 0.75, 0.5 }, + .{ 0.72838634, 0.60168415 }, + .{ 0.66728264, 0.68578625 }, + .{ 0.57725424, 0.7377641 }, + .{ 0.47386786, 0.74863046 }, + .{ 0.375, 0.71650636 }, + .{ 0.29774573, 0.6469463 }, + .{ 0.2554631, 0.5519779 }, + .{ 0.25546312, 0.44802207 }, + .{ 0.29774576, 0.35305366 }, + .{ 0.37500003, 0.28349364 }, + .{ 0.47386792, 0.25136954 }, + .{ 0.5772543, 0.26223588 }, + .{ 0.6672827, 0.3142138 }, + .{ 0.7283864, 0.39831588 }, + }; + verts = try std.BoundedArray([2]f32, level.Layer.MAX_VERTS).fromSlice(vert_coords1[0..]); + + layer = level.Layer{ .height = 1, .vertices = verts, .vertical_texture = 1, .horizontal_texture = 2, .vertical_texture_scale = 2 }; + try map.cells.items[y * 16 + x].lower_layers.append(layer); + } + } } try map.objects.append(level.Object{ .pos_x = 1.5, .pos_y = 7.5, .pos_z = 2, .texture = 2, .height = 1, .width = 1 }); -- cgit v1.3.1