function render_dungeon(dungeon) for y = 1, dungeon.size.y do for x = 1, dungeon.size.x do if dungeon.grid[y][x].wall_texture ~= nil then draw_quad { texture = dungeon.grid[y][x].wall_texture, v3 = { x = y * 2, y = 2, z = x * 2 }, v2 = { x = y * 2, y = 0, z = x * 2 }, v1 = { x = y * 2 + 2, y = 0, z = x * 2 }, v0 = { x = y * 2 + 2, y = 2, z = x * 2 }, texture_region = { w = 128, h = 128 }, } draw_quad { texture = dungeon.grid[y][x].wall_texture, v3 = { x = y * 2 + 2, y = 2, z = x * 2 }, v2 = { x = y * 2 + 2, y = 0, z = x * 2 }, v1 = { x = y * 2 + 2, y = 0, z = x * 2 + 2 }, v0 = { x = y * 2 + 2, y = 2, z = x * 2 + 2 }, texture_region = { w = 128, h = 128 }, } draw_quad { texture = dungeon.grid[y][x].wall_texture, v3 = { x = y * 2 + 2, y = 2, z = x * 2 + 2 }, v2 = { x = y * 2 + 2, y = 0, z = x * 2 + 2 }, v1 = { x = y * 2, y = 0, z = x * 2 + 2 }, v0 = { x = y * 2, y = 2, z = x * 2 + 2 }, texture_region = { w = 128, h = 128 }, } draw_quad { texture = dungeon.grid[y][x].wall_texture, v3 = { x = y * 2, y = 2, z = x * 2 + 2 }, v2 = { x = y * 2, y = 0, z = x * 2 + 2 }, v1 = { x = y * 2, y = 0, z = x * 2 }, v0 = { x = y * 2, y = 2, z = x * 2 }, texture_region = { w = 128, h = 128 }, } elseif dungeon.grid[y][x].tile_texture ~= nil then draw_quad { texture = dungeon.grid[y][x].tile_texture, v0 = { x = y * 2 + 2, y = 0, z = x * 2 }, v1 = { x = y * 2, y = 0, z = x * 2 }, v2 = { x = y * 2, y = 0, z = x * 2 + 2 }, v3 = { x = y * 2 + 2, y = 0, z = x * 2 + 2}, texture_region = { w = 128, h = 128 }, } draw_quad { texture = dungeon.grid[y][x].tile_texture, v3 = { x = y * 2 + 2, y = 2, z = x * 2 }, v2 = { x = y * 2, y = 2, z = x * 2 }, v1 = { x = y * 2, y = 2, z = x * 2 + 2 }, v0 = { x = y * 2 + 2, y = 2, z = x * 2 + 2}, texture_region = { w = 128, h = 128 }, } end if dungeon.grid[y][x].face_texture ~= nil then if dungeon.grid[y][x].face == "horizon" then draw_quad { texture = dungeon.grid[y][x].face_texture, v3 = { x = y * 2, y = 2, z = x * 2 + 1 }, v2 = { x = y * 2, y = 0, z = x * 2 + 1 }, v1 = { x = y * 2 + 2, y = 0, z = x * 2 + 1 }, v0 = { x = y * 2 + 2, y = 2, z = x * 2 + 1 }, texture_region = { w = 64, h = 96 }, } draw_quad { texture = dungeon.grid[y][x].face_texture, v3 = { x = y * 2 + 2, y = 2, z = x * 2 + 1 }, v2 = { x = y * 2 + 2, y = 0, z = x * 2 + 1 }, v1 = { x = y * 2, y = 0, z = x * 2 + 1 }, v0 = { x = y * 2, y = 2, z = x * 2 + 1 }, texture_region = { w = 64, h = 96 }, } elseif dungeon.grid[y][x].face == "observer" then draw_billboard { texture = dungeon.grid[y][x].face_texture, position = { x = y * 2 + 1, y = 1, z = x * 2 + 1 }, size = { x = 1, y = 1 }, } end end end end end