Toast Engine
Toggle main menu visibility
Loading...
Searching...
No Matches
layers.hpp
Go to the documentation of this file.
1
7
8
#pragma once
9
#include <cstdint>
10
#include <string>
11
#include <string_view>
12
#include <
toast/export.hpp
>
13
#include <vector>
14
15
namespace
physics {
16
17
inline
constexpr
int
k_layer_count = 32;
18
inline
constexpr
uint32_t k_all_layers = 0xFFFF'FFFFu;
19
inline
constexpr
size_t
k_layer_abbreviation_length = 3;
20
21
enum
BuiltinLayer : uint8_t {
22
default_layer = 0,
23
trigger_layer,
24
characters_layer,
25
player_layer,
26
small_debris_layer,
27
large_debris_layer,
28
projectiles_layer,
29
};
30
31
[[nodiscard]]
32
constexpr
auto
layerBit(
int
layer) -> uint32_t {
33
return
layer >= 0 && layer < k_layer_count ? 1u << static_cast<uint32_t>(layer) : 0u;
34
}
35
36
struct
LayerFilter
{
37
uint32_t included = layerBit(default_layer);
38
uint32_t excluded = 0;
39
};
40
44
constexpr
void
includeLayer
(
LayerFilter
& filter,
int
layer,
bool
value) {
45
const
uint32_t bit = layerBit(layer);
46
filter.included = value ? filter.included | bit : filter.included & ~bit;
47
if
(value) {
48
filter.excluded &= ~bit;
49
}
50
}
51
52
constexpr
void
excludeLayer(LayerFilter& filter,
int
layer,
bool
value) {
53
const
uint32_t bit = layerBit(layer);
54
filter.excluded = value ? filter.excluded | bit : filter.excluded & ~bit;
55
if
(value) {
56
filter.included &= ~bit;
57
}
58
}
59
60
[[nodiscard]]
61
constexpr
auto
layersCollide(
LayerFilter
a,
LayerFilter
b) ->
bool
{
62
return
(a.included & b.included) != 0 && (a.excluded & b.included) == 0 && (b.excluded & a.included) == 0;
63
}
64
66
[[nodiscard]]
67
TOAST_API
auto
layerMask(
const
std::vector<int>& layers) -> uint32_t;
68
70
[[nodiscard]]
71
TOAST_API
auto
getLayer(std::string_view name) -> int;
72
73
[[nodiscard]]
74
TOAST_API
auto
layerName(
int
layer) -> std::string;
75
76
[[nodiscard]]
77
TOAST_API
auto
layerAbbreviation(
int
layer) -> std::string;
78
79
void
registerLayerSettings();
80
81
}
export.hpp
physics::includeLayer
constexpr void includeLayer(LayerFilter &filter, int layer, bool value)
Definition
layers.hpp:44
physics::LayerFilter
Definition
layers.hpp:36
engine
src
toast
physics
layers.hpp
Generated by
1.17.0