R-Type 0.1
Loading...
Searching...
No Matches
Transform.hpp
1#pragma once
2
3#include <cstdint>
4#include <nlohmann/json.hpp>
5
6#include <Registry.hpp>
7
8#include "../utils/vec2.hpp"
9
10namespace component {
22struct Transform {
23 float rotation;
26};
27
34inline void transformFromJson(rtk::ecs::Registry &reg, std::size_t entity,
35 const nlohmann::json &data) {
36 component::Transform transform{};
37
38 if (data.contains("position")) {
39 transform.position.x = data["position"].value("x", 0.0f);
40 transform.position.y = data["position"].value("y", 0.0f);
41 } else {
42 transform.position.x = data.value("x", 0.0f);
43 transform.position.y = data.value("y", 0.0f);
44 }
45
46 transform.rotation = data.value("rotation", 0.0f);
47
48 if (data.contains("scale")) {
49 transform.scale.x = data["scale"].value("x", 1.0f);
50 transform.scale.y = data["scale"].value("y", 1.0f);
51 } else {
52 transform.scale.x = 1.0f;
53 transform.scale.y = 1.0f;
54 }
55
56 reg.get_components<component::Transform>().insert_at(entity, transform);
57}
58
60} // namespace component
void transformFromJson(rtk::ecs::Registry &reg, std::size_t entity, const nlohmann::json &data)
Adds a Transform to an entity from its blueprint data.
Definition Transform.hpp:34
Position, rotation and scale of an entity in world space.
Definition Transform.hpp:22
utils::vec2 position
Top left corner, in pixels.
Definition Transform.hpp:24
float rotation
Rotation in radians.
Definition Transform.hpp:23
utils::vec2 scale
Scale factor on each axis.
Definition Transform.hpp:25
Two dimensional vector of floats.
Definition vec2.hpp:12