SDEngine
Game Engine
Loading...
Searching...
No Matches
Command.hpp File Reference
#include <functional>
#include <memory>
#include <string>
#include <unordered_map>
#include <vector>
#include "SD/core/types.hpp"
#include "SD/utils/serialization.hpp"
+ Include dependency graph for Command.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  sd::CommandRegistry
 
class  sd::CommandFactory
 
struct  sd::EntityHandle
 
class  sd::Command
 
struct  std::hash< sd::EntityHandle >
 

Namespaces

namespace  sd
 

Macros

#define COMMAND_ID(Name)
 
#define COMMAND_ID_T(Name, T)
 
#define REGISTER_COMMAND(Name)
 
#define REGISTER_COMPONENT_COMMANDS(T)
 

Macro Definition Documentation

◆ COMMAND_ID

#define COMMAND_ID (   Name)
Value:
public: \
inline static u32 s_type_id; \
u32 get_type_id() const override { \
return s_type_id; \
} \
\
private:
std::uint32_t u32
Definition types.hpp:15
constexpr T g_type_max
Definition types.hpp:21

◆ COMMAND_ID_T

#define COMMAND_ID_T (   Name,
 
)
Value:
public: \
inline static u32 s_type_id; \
u32 get_type_id() const override { \
return s_type_id; \
} \
\
private:

◆ REGISTER_COMMAND

#define REGISTER_COMMAND (   Name)
Value:
namespace { \
struct Name##_CommandRegistrar { \
sd::Name::s_type_id = sd::CommandRegistry::register_(#Name); \
sd::CommandFactory::register_(sd::Name::s_type_id, \
[] { return std::make_unique<sd::Name>(); }); \
} \
}; \
}
static u32 register_(const char *name, u32 component_id=0)
Definition CommandQueue.cpp:8

◆ REGISTER_COMPONENT_COMMANDS

#define REGISTER_COMPONENT_COMMANDS (   T)
Value:
namespace { \
struct AddComponentCmd##T##_Registrar { \
AddComponentCmd##T##_Registrar() { \
sd::CommandRegistry::register_("AddComponentCmd", sd::ComponentTraits<T>::id); \
sd::CommandFactory::register_(sd::AddComponentCmd<T>::s_type_id, \
[] { return std::make_unique<sd::AddComponentCmd<T>>(); }); \
} \
}; \
static AddComponentCmd##T##_Registrar s_AddComponentCmd##T##_registrar; \
} \
namespace { \
struct RemoveComponentCmd##T##_Registrar { \
RemoveComponentCmd##T##_Registrar() { \
sd::CommandRegistry::register_("RemoveComponentCmd", sd::ComponentTraits<T>::id); \
sd::CommandFactory::register_(sd::RemoveComponentCmd<T>::s_type_id, \
[] { return std::make_unique<sd::RemoveComponentCmd<T>>(); }); \
} \
}; \
static RemoveComponentCmd##T##_Registrar s_RemoveComponentCmd##T##_registrar; \
}
Definition commands.hpp:46
Definition commands.hpp:71
Definition component_registration.hpp:71