summaryrefslogtreecommitdiffhomepage
path: root/src/wireframe-mesh.hpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2022-10-09 05:06:41 +0200
committerStanislaw Halik <sthalik@misaki.pl>2022-10-09 05:06:41 +0200
commit94f6748d5f5b9fdc3047022fe59d66028bde63f3 (patch)
treede3dd2e7944c9dea12523702773ce5a2f93beed5 /src/wireframe-mesh.hpp
parente3b2c9267e7a8da5adca522a48a9f9a8457f89d8 (diff)
a
Diffstat (limited to 'src/wireframe-mesh.hpp')
-rw-r--r--src/wireframe-mesh.hpp58
1 files changed, 0 insertions, 58 deletions
diff --git a/src/wireframe-mesh.hpp b/src/wireframe-mesh.hpp
deleted file mode 100644
index 0ae122f5..00000000
--- a/src/wireframe-mesh.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-#pragma once
-
-#include "tile-defs.hpp"
-#include <array>
-#include <utility>
-#include <Corrade/Containers/ArrayViewStl.h>
-#include <Magnum/Math/Vector2.h>
-#include <Magnum/GL/Buffer.h>
-#include <Magnum/GL/Mesh.h>
-#include "Magnum/GL/RectangleTexture.h"
-
-namespace Magnum::Examples {
-
-struct tile_shader;
-
-namespace wireframe
-{
-
-template<typename T>
-concept traits = requires (const T& x) {
- {T::num_vertices} -> std::convertible_to<std::size_t>;
- {x.primitive} -> std::convertible_to<GL::MeshPrimitive>;
- {x.make_vertex_array() } -> std::convertible_to<Containers::ArrayView<const void>>;
- {x.on_draw()} -> std::same_as<void>;
-};
-
-struct mesh_base
-{
- static GL::RectangleTexture make_constant_texture();
- GL::Buffer _vertex_buffer, _texcoords_buffer;
- GL::RectangleTexture _texture = make_constant_texture();
- GL::Mesh _mesh;
-
- mesh_base(GL::MeshPrimitive primitive, std::size_t num_vertices);
- void draw(tile_shader& shader);
-};
-
-} // namespace wireframe
-
-template<wireframe::traits T>
-struct wireframe_mesh final : private wireframe::mesh_base
-{
- wireframe_mesh();
- void draw(tile_shader& shader, T traits);
-};
-
-template<wireframe::traits T>
-wireframe_mesh<T>::wireframe_mesh() :
- wireframe::mesh_base{T::primitive, T::num_vertices}
-{}
-
-template <wireframe::traits T> void wireframe_mesh<T>::draw(tile_shader& shader, T x)
-{
- _vertex_buffer.setData(x.make_vertex_array(), GL::BufferUsage::DynamicDraw);
- mesh_base::draw(shader);
-}
-
-} // namespace Magnum::Examples