diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-12-08 12:00:45 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-12-08 12:00:45 +0100 |
commit | 9acf4738b15738cb2b9646481b75ba0c05a01e78 (patch) | |
tree | d8a8ce5007ea77f86d33136cdfa014e45d31d72b /draw | |
parent | a083f5c2124a6a907727b35a5c43d8175d396d73 (diff) |
draw, editor: visualize bounding boxes
Diffstat (limited to 'draw')
-rw-r--r-- | draw/quad-floor.hpp | 2 | ||||
-rw-r--r-- | draw/quad-wall-n.hpp | 2 | ||||
-rw-r--r-- | draw/quad-wall-w.hpp | 2 | ||||
-rw-r--r-- | draw/quad.cpp | 30 | ||||
-rw-r--r-- | draw/quad.hpp | 29 |
5 files changed, 62 insertions, 3 deletions
diff --git a/draw/quad-floor.hpp b/draw/quad-floor.hpp index 7a8ec59a..7d974798 100644 --- a/draw/quad-floor.hpp +++ b/draw/quad-floor.hpp @@ -13,7 +13,7 @@ struct quad_floor final quad_floor(Vector3 center, Vector2 size, float line_width); static constexpr std::size_t num_vertices = 4, num_indexes = 0; - static constexpr GL::MeshPrimitive primitive = GL::MeshPrimitive::LineLoop; + static constexpr auto primitive = GL::MeshPrimitive::LineLoop; using vertex_array = std::array<Vector3, num_vertices>; diff --git a/draw/quad-wall-n.hpp b/draw/quad-wall-n.hpp index 30d69e01..f07d7d06 100644 --- a/draw/quad-wall-n.hpp +++ b/draw/quad-wall-n.hpp @@ -12,7 +12,7 @@ struct quad_wall_n final quad_wall_n(Vector3 center, Vector3 size, float line_width); static constexpr std::size_t num_vertices = 4, num_indexes = 0; - static constexpr GL::MeshPrimitive primitive = GL::MeshPrimitive::LineLoop; + static constexpr auto primitive = GL::MeshPrimitive::LineLoop; using vertex_array = std::array<Vector3, num_vertices>; diff --git a/draw/quad-wall-w.hpp b/draw/quad-wall-w.hpp index fb087865..cca70b30 100644 --- a/draw/quad-wall-w.hpp +++ b/draw/quad-wall-w.hpp @@ -12,7 +12,7 @@ struct quad_wall_w final quad_wall_w(Vector3 center, Vector3 size, float line_width); static constexpr std::size_t num_vertices = 4, num_indexes = 0; - static constexpr GL::MeshPrimitive primitive = GL::MeshPrimitive::LineLoop; + static constexpr auto primitive = GL::MeshPrimitive::LineLoop; using vertex_array = std::array<Vector3, num_vertices>; diff --git a/draw/quad.cpp b/draw/quad.cpp new file mode 100644 index 00000000..d7be52f2 --- /dev/null +++ b/draw/quad.cpp @@ -0,0 +1,30 @@ +#include "quad.hpp" +#include "wireframe.hpp" +#include <Magnum/GL/Renderer.h> + +namespace floormat::wireframe { + +quad::quad(Vector3 center, Vector2 size, float line_width) : + center{center}, size{size}, line_width{line_width} +{} + +quad::vertex_array quad::make_vertex_array() const +{ + const auto Sx = size[0]*.5f, Sy = size[1]*.5f; + const auto Cx_0 = center[0] - Sx, Cx_1 = center[0] + Sx; + const auto Cy_0 = center[1] - Sy, Cy_1 = center[1] + Sy; + const auto Cz = center[2] + 0; + return {{ + { Cx_0, Cy_0, Cz }, + { Cx_1, Cy_0, Cz }, + { Cx_1, Cy_1, Cz }, + { Cx_0, Cy_1, Cz }, + }}; +} + +void quad::on_draw() const +{ + mesh_base::set_line_width(line_width); +} + +} // namespace floormat::wireframe diff --git a/draw/quad.hpp b/draw/quad.hpp new file mode 100644 index 00000000..7bccebae --- /dev/null +++ b/draw/quad.hpp @@ -0,0 +1,29 @@ +#pragma once +#include <array> +#include <Corrade/Containers/ArrayViewStl.h> +#include <Magnum/Math/Vector3.h> +#include <Magnum/GL/Mesh.h> + +namespace floormat::wireframe { + +struct quad final +{ + quad(Vector3 start, Vector2 size, float line_width); + + static constexpr std::size_t num_vertices = 4, num_indexes = 0; + static constexpr GL::MeshPrimitive primitive = GL::MeshPrimitive::LineLoop; + + using vertex_array = std::array<Vector3, num_vertices>; + using index_array = std::array<UnsignedShort, num_indexes>; + + vertex_array make_vertex_array() const; + static ArrayView<const void> make_index_array() { return {}; } + void on_draw() const; + +private: + Vector3 center; + Vector2 size; + float line_width = 2; +}; + +} // namespace floormat::wireframe |