le2d v0.4.7
2D game engine framework
 
Loading...
Searching...
No Matches
circle.hpp
Go to the documentation of this file.
1#pragma once
2#include "le2d/geometry.hpp"
4#include <kvf/color.hpp>
5#include <kvf/rect.hpp>
6
7namespace le::shape {
10 kvf::Color const color{kvf::white_v};
11 std::int32_t resolution{128};
12};
13
15class Circle : public IGeometry {
16 public:
18
19 static constexpr auto default_diameter_v = default_length_v;
20
21 explicit(false) Circle(float const diameter = default_diameter_v, CircleParams const& params = {}) { create(diameter, params); }
22
23 [[nodiscard]] auto get_vertices() const -> std::span<Vertex const> final { return m_verts.vertices; }
24 [[nodiscard]] auto get_indices() const -> std::span<std::uint32_t const> final { return m_verts.indices; }
25 [[nodiscard]] auto get_topology() const -> vk::PrimitiveTopology final { return vk::PrimitiveTopology::eTriangleFan; }
26
27 void create(float diameter = default_diameter_v, Params const& params = {});
28
29 [[nodiscard]] auto get_diameter() const -> float { return m_diameter; }
30 [[nodiscard]] auto get_size() const -> glm::vec2 { return glm::vec2{get_diameter()}; }
31
32 [[nodiscard]] auto get_vertex_array() const -> VertexArray const& { return m_verts; }
33
34 private:
35 VertexArray m_verts{};
36 float m_diameter{};
37};
38} // namespace le::shape
Interface for drawable geometry.
Definition geometry.hpp:9
virtual auto get_vertices() const -> std::span< Vertex const >=0
static constexpr auto default_length_v
Definition geometry.hpp:11
virtual auto get_indices() const -> std::span< std::uint32_t const >=0
virtual auto get_topology() const -> vk::PrimitiveTopology=0
Circle Geometry.
Definition circle.hpp:15
auto get_vertex_array() const -> VertexArray const &
Definition circle.hpp:32
auto get_size() const -> glm::vec2
Definition circle.hpp:30
CircleParams Params
Definition circle.hpp:17
CircleParams const & params
Definition circle.hpp:21
auto get_diameter() const -> float
Definition circle.hpp:29
static constexpr auto default_diameter_v
Definition circle.hpp:19
Definition circle.hpp:7
Drawable vertex array.
Definition vertex_array.hpp:9
std::vector< Vertex > vertices
Definition vertex_array.hpp:10
std::vector< std::uint32_t > indices
Definition vertex_array.hpp:11
Drawable vertex.
Definition vertex.hpp:7
Circle creation parameters.
Definition circle.hpp:9
std::int32_t resolution
Definition circle.hpp:11
kvf::Color const color
Definition circle.hpp:10