SDEngine
Game Engine
Loading...
Searching...
No Matches
components.hpp
Go to the documentation of this file.
1#pragma once
2#include <VLA/Matrix.hpp>
3
5#include "SD/core/types.hpp"
7
8namespace sd {
9
10struct Transform {
11 VLA::Matrix4x4f world_matrix;
12};
15
16template<>
18 static void serialize(const Transform& c, Serializer& s) { s.write(c.world_matrix.A); }
19 static void deserialize(Transform& c, Serializer& s) { s.read(c.world_matrix.A); }
20};
21
22struct Camera {
23 VLA::Matrix4x4f view;
24 VLA::Matrix4x4f proj;
25};
28
29template<>
31 static void serialize(const Camera& c, Serializer& s) {
32 s.write(c.view.A);
33 s.write(c.proj.A);
34 }
35 static void deserialize(Camera& c, Serializer& s) {
36 s.read(c.view.A);
37 s.read(c.proj.A);
38 }
39};
40
41struct Renderable {
46 float color[4] = {1.0f, 0.0f, 0.0f, 1.0f};
47};
50
51template<>
53 static void serialize(const Renderable& c, Serializer& s) {
54 s.write(c.mesh_id);
55 s.write(c.material_id);
56 s.write(c.render_stage);
57 s.write(c.view_mask);
58 s.write(c.color);
59 }
61 c.mesh_id = s.read<u32>();
62 c.material_id = s.read<u32>();
63 c.render_stage = s.read<i32>();
64 c.view_mask = s.read<u32>();
65 s.read(c.color);
66 }
67};
68
69// TODO(vatnar): this shouldnt be a string, rather a non owning slice (arena strings etc)
70struct DebugName {
71 std::string name;
72};
75
76template<>
78 static void serialize(const DebugName& c, Serializer& s) { s.write(c.name); }
79 static void deserialize(DebugName& c, Serializer& s) { c.name = s.read_string(); }
80};
81
82} // namespace sd
#define REGISTER_SERIALIZABLE_COMPONENT(T)
Definition ComponentFactory.hpp:25
Definition serialization.hpp:36
#define REGISTER_SD_COMPONENT(Type)
Registers a SD component for use with ECS.
Definition component_registration.hpp:80
Definition Application.hpp:28
Definition components.hpp:22
VLA::Matrix4x4f proj
Definition components.hpp:24
VLA::Matrix4x4f view
Definition components.hpp:23
static void serialize(const Camera &c, Serializer &s)
Definition components.hpp:31
static void deserialize(Camera &c, Serializer &s)
Definition components.hpp:35
static void deserialize(DebugName &c, Serializer &s)
Definition components.hpp:79
static void serialize(const DebugName &c, Serializer &s)
Definition components.hpp:78
static void serialize(const Renderable &c, Serializer &s)
Definition components.hpp:53
static void deserialize(Renderable &c, Serializer &s)
Definition components.hpp:60
static void serialize(const Transform &c, Serializer &s)
Definition components.hpp:18
static void deserialize(Transform &c, Serializer &s)
Definition components.hpp:19
Definition component_registration.hpp:50
Definition components.hpp:70
std::string name
Definition components.hpp:71
Definition components.hpp:41
float color[4]
Definition components.hpp:46
u32 mesh_id
Definition components.hpp:42
u32 material_id
Definition components.hpp:43
i32 render_stage
Definition components.hpp:44
u32 view_mask
Definition components.hpp:45
Definition components.hpp:10
VLA::Matrix4x4f world_matrix
Definition components.hpp:11
std::uint32_t u32
Definition types.hpp:15
constexpr T g_type_max
Definition types.hpp:21
std::int32_t i32
Definition types.hpp:10