some more advanced debug rendering for lines and tiles
This commit is contained in:
@@ -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.")) {
|
||||
|
||||
Reference in New Issue
Block a user