5#include <nlohmann/json.hpp>
47 std::uint32_t
mask = 0xFFFFFFFF;
62 if (name ==
"PlayerProjectile")
64 if (name ==
"EnemyProjectile")
66 if (name ==
"Environment")
78 const nlohmann::json &data) {
80 collider.
offsetX = data.value(
"offsetX", data.value(
"offset_x", 0.0f));
81 collider.offsetY = data.value(
"offsetY", data.value(
"offset_y", 0.0f));
82 collider.width = data.value(
"width", 0.0f);
83 collider.height = data.value(
"height", 0.0f);
84 collider.trigger = data.value(
"trigger",
true);
86 if (data.contains(
"layer") && data[
"layer"].is_string()) {
87 collider.layer =
stringToLayer(data[
"layer"].get<std::string>());
89 collider.layer = data.value(
"layer", 1u);
92 if (data.contains(
"mask") && data[
"mask"].is_array()) {
94 for (
const auto &maskStr : data[
"mask"]) {
98 collider.mask = data.value(
"mask", 0xFFFFFFFFu);
std::uint32_t stringToLayer(const std::string &name)
Converts a layer name to its bit flag.
Definition AABBCollider.hpp:57
CollisionLayer
Bit flags naming the group a collider belongs to.
Definition AABBCollider.hpp:20
void aabbColliderFromJson(rtk::ecs::Registry ®, std::size_t entity, const nlohmann::json &data)
Adds an AABBCollider to an entity from its blueprint data.
Definition AABBCollider.hpp:77
@ Environment
Stage walls and obstacles.
Definition AABBCollider.hpp:25
@ Enemy
Bydos enemies.
Definition AABBCollider.hpp:22
@ EnemyProjectile
Missiles fired by enemies.
Definition AABBCollider.hpp:24
@ PlayerProjectile
Missiles fired by players.
Definition AABBCollider.hpp:23
@ Player
Player ships.
Definition AABBCollider.hpp:21
Collision layer definitions.
Definition AABBCollider.hpp:11
Axis aligned bounding box used for collision detection.
Definition AABBCollider.hpp:40
std::uint32_t layer
Layers this collider belongs to.
Definition AABBCollider.hpp:46
float offsetY
Box offset from the entity position on y.
Definition AABBCollider.hpp:42
float height
Box height before scaling.
Definition AABBCollider.hpp:44
std::uint32_t mask
Layers this collider reacts to.
Definition AABBCollider.hpp:47
bool trigger
Reports overlaps without physical response.
Definition AABBCollider.hpp:49
float width
Box width before scaling.
Definition AABBCollider.hpp:43
float offsetX
Box offset from the entity position on x.
Definition AABBCollider.hpp:41