some more advanced debug rendering for lines and tiles

This commit is contained in:
2026-04-11 06:47:07 -03:00
parent 0a882eec78
commit 343de8a22b
5 changed files with 85 additions and 6 deletions

View File

@@ -259,6 +259,37 @@ engine::add_tiles_to_render_request(render::request request) const {
return request.add_lines(lines);
}
render::request
engine::add_single_tile_to_render_request(render::request request,
glm::uvec2 tile) const {
auto lines = std::vector<glm::vec3>();
const auto full_dimensions = area_size * 2.0f;
const auto cell_size = full_dimensions.x / 22.0f;
const auto start = area_origin - area_size;
const auto min_x = start.x + (static_cast<float>(tile.x) * cell_size);
const auto min_y = start.z + (static_cast<float>(tile.y) * cell_size);
const auto max_x = start.x + (static_cast<float>(tile.x + 1) * cell_size);
const auto max_y = start.z + (static_cast<float>(tile.y + 1) * cell_size);
const auto p1 = glm::vec3(min_x, 0.0f, min_y);
const auto p2 = glm::vec3(max_x, 0.0f, min_y);
const auto p3 = glm::vec3(max_x, 0.0f, max_y);
const auto p4 = glm::vec3(min_x, 0.0f, max_y);
lines.push_back(p1);
lines.push_back(p2);
lines.push_back(p2);
lines.push_back(p3);
lines.push_back(p3);
lines.push_back(p4);
lines.push_back(p4);
lines.push_back(p1);
return request.add_lines(lines, glm::vec3(1.0f, 1.0f, 0.0f));
}
engine::mesh_bounds engine::compute_size_of_mesh(const mesh_node &mesh) {
auto bounds = mesh_bounds();
@@ -448,6 +479,12 @@ void engine::run() {
auto request = render::request();
if (!ImGui::GetIO().WantCaptureMouse) {
const auto mx = ImGui::GetIO().MousePos;
std::println("mouse {}, {}", mx.x, mx.y);
// request = request.add_circle({mx.x, mx.y}, 1.0f);
}
request = add_level_bounds_to_render_request(request);
if (current_level.has_value()) {
request = add_level_to_render_request(request, &(*current_level));
@@ -461,6 +498,12 @@ void engine::run() {
request = add_tiles_to_render_request(request);
}
level_editing_data.intersected_tile = glm::uvec2(5, 5);
if (level_editing_data.intersected_tile.has_value()) {
request = add_single_tile_to_render_request(
request, *level_editing_data.intersected_tile);
}
renderer.render(request, view, projection);
} catch (const vuk::VkException &ex) {
if (ex.what() != std::string("Out of date.")) {