SDEngine
Game Engine
Loading...
Searching...
No Matches
commands.hpp
Go to the documentation of this file.
1#pragma once
2#include "Command.hpp"
3#include "CommandQueue.hpp"
4#include "components.hpp"
5#include "Entity.hpp"
6#include "EntityManager.hpp"
7
8namespace sd {
9
10class CreateEntityCmd : public Command {
12public:
13 CreateEntityCmd() = default;
15
18
19 void execute(EntityManager& em, CommandQueue& queue) override {
21 queue.set_entity_for_handle(m_handle, m_created_entity);
22 }
23 void serialize(Serializer& serializer) const override { serializer.write(m_handle.id); }
24 void deserialize(Serializer& serializer) override { m_handle.id = serializer.read<u32>(); }
25};
26
27class DestroyEntityCmd : public Command {
29public:
31 DestroyEntityCmd() = default;
33
34 void execute(EntityManager& em, CommandQueue&) override { em.destroy(m_entity); }
35 void serialize(Serializer& serializer) const override {
38 }
40 m_entity.index = serializer.read<u32>();
42 }
43};
44
45template<SerializableComponent T>
69
70template<SerializableComponent T>
85
92
93} // namespace SD
#define REGISTER_COMPONENT_COMMANDS(T)
Definition Command.hpp:70
#define COMMAND_ID_T(Name, T)
Definition Command.hpp:49
#define COMMAND_ID(Name)
Definition Command.hpp:40
#define REGISTER_COMMAND(Name)
Definition Command.hpp:58
Definition commands.hpp:46
T m_data
Definition commands.hpp:50
AddComponentCmd(EntityHandle handle, T data)
Definition commands.hpp:52
AddComponentCmd()=default
void deserialize(Serializer &serializer) override
Definition commands.hpp:64
void serialize(Serializer &serializer) const override
Definition commands.hpp:59
EntityHandle m_handle
Definition commands.hpp:49
void execute(EntityManager &em, CommandQueue &queue) override
Definition commands.hpp:54
Definition CommandQueue.hpp:7
Definition Command.hpp:108
Definition commands.hpp:10
void execute(EntityManager &em, CommandQueue &queue) override
Definition commands.hpp:19
Entity m_created_entity
Definition commands.hpp:17
CreateEntityCmd(EntityHandle handle)
Definition commands.hpp:14
void serialize(Serializer &serializer) const override
Definition commands.hpp:23
CreateEntityCmd()=default
void deserialize(Serializer &serializer) override
Definition commands.hpp:24
EntityHandle m_handle
Definition commands.hpp:16
Definition commands.hpp:27
Entity m_entity
Definition commands.hpp:30
DestroyEntityCmd()=default
void execute(EntityManager &em, CommandQueue &) override
Definition commands.hpp:34
void deserialize(Serializer &serializer) override
Definition commands.hpp:39
DestroyEntityCmd(Entity e)
Definition commands.hpp:32
void serialize(Serializer &serializer) const override
Definition commands.hpp:35
Definition EntityManager.hpp:83
Entity create()
Definition EntityManager.inl:192
T * add_component(Entity e, Args &&... args)
bool try_remove_component(Entity e)
void destroy(Entity e)
Definition EntityManager.inl:206
Definition commands.hpp:71
RemoveComponentCmd()=default
void execute(EntityManager &em, CommandQueue &queue) override
Definition commands.hpp:78
EntityHandle m_handle
Definition commands.hpp:74
void deserialize(Serializer &serializer) override
Definition commands.hpp:83
RemoveComponentCmd(EntityHandle handle)
Definition commands.hpp:76
void serialize(Serializer &serializer) const override
Definition commands.hpp:82
Definition serialization.hpp:36
Definition Application.hpp:28
Definition components.hpp:22
static void deserialize(T &component, Serializer &s)=delete
static void serialize(const T &component, Serializer &s)=delete
Definition components.hpp:70
Definition Command.hpp:97
u32 id
Definition Command.hpp:98
Definition Entity.hpp:18
u32 index
Definition Entity.hpp:19
u32 generation
Definition Entity.hpp:20
Definition components.hpp:41
Definition components.hpp:10
std::uint32_t u32
Definition types.hpp:15
constexpr T g_type_max
Definition types.hpp:21