Toast Engine
Toggle main menu visibility
Loading...
Searching...
No Matches
fracture_pattern.hpp
1
7
8
#pragma once
9
#include <array>
10
#include <cstdint>
11
#include <optional>
12
#include <string_view>
13
14
namespace
physics {
15
16
enum class
FracturePattern : uint8_t {
17
brittle,
18
granular,
19
fibrous,
20
ductile,
21
};
22
23
inline
constexpr
std::array<std::string_view, 4> k_fracture_pattern_names {
"brittle"
,
"granular"
,
"fibrous"
,
"ductile"
};
24
25
[[nodiscard]]
26
constexpr
auto
fracturePatternName(FracturePattern pattern) -> std::string_view {
27
auto
index =
static_cast<
size_t
>
(pattern);
28
return
index < k_fracture_pattern_names.size() ? k_fracture_pattern_names[index] : std::string_view {};
29
}
30
31
[[nodiscard]]
32
constexpr
auto
fracturePatternFromName(std::string_view name) -> std::optional<FracturePattern> {
33
for
(
size_t
i = 0; i < k_fracture_pattern_names.size(); ++i) {
34
if
(k_fracture_pattern_names[i] == name) {
35
return
static_cast<
FracturePattern
>
(i);
36
}
37
}
38
return
std::nullopt;
39
}
40
42
[[nodiscard]]
43
constexpr
auto
shatters(FracturePattern pattern) ->
bool
{
44
return
pattern != FracturePattern::ductile;
45
}
46
47
}
engine
src
toast
physics
fracture_pattern.hpp
Generated by
1.17.0