Unravel Engine C++ Reference
Loading...
Searching...
No Matches
shape_to_path.hpp
Go to the documentation of this file.
1
#ifndef GENERATOR_SHAPETOPATH_HPP
2
#define GENERATOR_SHAPETOPATH_HPP
3
4
#include "
path_vertex.hpp
"
5
#include "
shape_vertex.hpp
"
6
#include "
utils.hpp
"
7
8
namespace
generator
9
{
10
15
template
<
typename
shape_t>
16
class
shape_to_path_t
17
{
18
private
:
19
using
impl_t = shape_t;
20
impl_t shape_;
21
22
public
:
23
class
vertices_t
24
{
25
public
:
26
path_vertex_t
generate
()
const
27
{
28
shape_vertex_t
shapeVertex = vertices_.generate();
29
30
path_vertex_t
vertex;
31
32
vertex.
position
= gml::dvec3(shapeVertex.
position
, 0.0);
33
34
vertex.
tangent
= gml::dvec3(shapeVertex.
tangent
, 0.0);
35
vertex.
normal
= gml::dvec3{0.0, 0.0, 1.0};
36
37
vertex.
tex_coord
= shapeVertex.
tex_coord
;
38
39
return
vertex;
40
}
41
42
bool
done
() const noexcept
43
{
44
return
vertices_.done();
45
}
46
47
void
next
()
48
{
49
vertices_.next();
50
}
51
52
private
:
53
typename
vertex_generator_type<shape_t>::type
vertices_;
54
55
explicit
vertices_t
(
const
shape_t& shape) : vertices_{shape.
vertices
()}
56
{
57
}
58
59
friend
class
shape_to_path_t
;
60
};
61
62
shape_to_path_t
(shape_t shape) : shape_{
std
::move(shape)}
63
{
64
}
65
66
using
edges_t
=
typename
impl_t::edges_t;
67
68
edges_t
edges
() const noexcept
69
{
70
return
shape_.edges();
71
}
72
73
vertices_t
vertices
()
const
74
{
75
return
vertices_t
{*
this
};
76
}
77
};
78
79
template
<
typename
shape_t>
80
shape_to_path_t<shape_t>
shape_to_path
(shape_t shape)
81
{
82
return
shape_to_path_t<shape_t>
{std::move(shape)};
83
}
84
}
// namespace generator
85
86
#endif
generator::path_vertex_t
Definition
path_vertex.hpp:10
generator::path_vertex_t::normal
gml::dvec3 normal
Definition
path_vertex.hpp:14
generator::path_vertex_t::tangent
gml::dvec3 tangent
Definition
path_vertex.hpp:20
generator::path_vertex_t::tex_coord
double tex_coord
Definition
path_vertex.hpp:22
generator::path_vertex_t::position
gml::dvec3 position
Definition
path_vertex.hpp:16
generator::shape_to_path_t::vertices_t
Definition
shape_to_path.hpp:24
generator::shape_to_path_t::vertices_t::next
void next()
Definition
shape_to_path.hpp:47
generator::shape_to_path_t::vertices_t::done
bool done() const noexcept
Definition
shape_to_path.hpp:42
generator::shape_to_path_t::vertices_t::generate
path_vertex_t generate() const
Definition
shape_to_path.hpp:26
generator::shape_to_path_t
Definition
shape_to_path.hpp:17
generator::shape_to_path_t::vertices
vertices_t vertices() const
Definition
shape_to_path.hpp:73
generator::shape_to_path_t::shape_to_path_t
shape_to_path_t(shape_t shape)
Definition
shape_to_path.hpp:62
generator::shape_to_path_t::edges_t
typename impl_t::edges_t edges_t
Definition
shape_to_path.hpp:66
generator::shape_to_path_t::edges
edges_t edges() const noexcept
Definition
shape_to_path.hpp:68
generator::shape_vertex_t
Definition
shape_vertex.hpp:12
generator::shape_vertex_t::tex_coord
double tex_coord
Definition
shape_vertex.hpp:20
generator::shape_vertex_t::tangent
gml::dvec2 tangent
Definition
shape_vertex.hpp:18
generator::shape_vertex_t::position
gml::dvec2 position
Definition
shape_vertex.hpp:14
generator
Definition
any_generator.hpp:7
generator::shape_to_path
shape_to_path_t< shape_t > shape_to_path(shape_t shape)
Definition
shape_to_path.hpp:80
std
Definition
render_view_keys.h:37
path_vertex.hpp
shape_vertex.hpp
generator::vertex_generator_type::type
void type
Definition
utils.hpp:59
utils.hpp
UnravelEngine
UnravelEngine
engine
engine
rendering
generator
shape_to_path.hpp
Generated by
1.12.0