3#include "./GECSManager.h"
4#include <unordered_map>
7static const std::unordered_map<std::string, std::function<void(
Entity*)>> addComponentMap = {
9 {
"SpriteComponent", [](
Entity* entity) {entity->addGroup(Manager::groupRenderSprites);entity->addComponent<
SpriteComponent>(); }},
30static const std::unordered_map<std::string, std::function<void(
Entity*)>> removeComponentMap = {
32 {
"SpriteComponent", [](
Entity* entity) { entity->removeGroup(Manager::groupRenderSprites); entity->removeComponent<
SpriteComponent>(); }},
52static const std::unordered_map<std::string, ComponentID> componentNameToID = {
53 {
"TransformComponent", GetComponentTypeID<TransformComponent>()},
54 {
"SpriteComponent", GetComponentTypeID<SpriteComponent>()},
55 {
"ColliderComponent", GetComponentTypeID<ColliderComponent>()},
56 {
"Triangle_w_Color", GetComponentTypeID<Triangle_w_Color>()},
57 {
"Rectangle_w_Color", GetComponentTypeID<Rectangle_w_Color>()},
58 {
"Line_w_Color", GetLinkComponentTypeID<Line_w_Color>()},
59 {
"SpringComponent", GetLinkComponentTypeID<SpringComponent>()},
60 {
"BoxComponent", GetComponentTypeID<BoxComponent>()},
61 {
"SphereComponent", GetComponentTypeID<SphereComponent>()},
62 {
"AnimatorComponent", GetComponentTypeID<AnimatorComponent>()},
63 {
"MovingAnimatorComponent", GetComponentTypeID<MovingAnimatorComponent>()},
64 {
"FlashAnimatorComponent", GetComponentTypeID<FlashAnimatorComponent>()},
65 {
"LineFlashAnimatorComponent", GetLinkComponentTypeID<LineFlashAnimatorComponent>()},
66 {
"RectangleFlashAnimatorComponent", GetComponentTypeID<RectangleFlashAnimatorComponent>()},
67 {
"RigidBodyComponent", GetComponentTypeID<RigidBodyComponent>()},
68 {
"PortComponent", GetComponentTypeID<PortComponent>()},
69 {
"PortSlotComponent", GetComponentTypeID<PortSlotComponent>()},
70 {
"PollingComponent", GetNodeComponentTypeID<PollingComponent>()},
71 {
"PathLinkerComponent", GetNodeComponentTypeID<PathLinkerComponent>()},
75static const std::unordered_map<std::string, std::function<
BaseComponent* (
Entity*)>> getComponentMap = {
99static void AddComponentByName(
const std::string& componentName,
Entity* entity) {
100 auto it = addComponentMap.find(componentName);
101 if (it != addComponentMap.end()) {
105 entity->getManager()->aboutTo_updateActiveEntities();
109static void RemoveComponentByName(
const std::string& componentName,
Entity* entity) {
110 auto it = removeComponentMap.find(componentName);
111 if (it != removeComponentMap.end()) {
115 entity->getManager()->aboutTo_updateActiveEntities();
119static BaseComponent* getComponentByName(
const std::string& componentName,
Entity* entity) {
120 auto it = getComponentMap.find(componentName);
121 if (it != getComponentMap.end()) {
122 return it->second(entity);
Definition AnimatorComponent.h:13
Definition BoxComponent.h:6
Definition ColliderComponent.h:12
Definition FlashAnimatorComponent.h:10
Definition LineFlashAnimatorComponent.h:14
Definition Line_w_Color.h:6
Definition MovingAnimatorComponent.h:11
Definition PathLinkerComponent.h:6
Definition PollingComponent.h:4
Definition PortComponent.h:7
Definition PortSlotComponent.h:7
Definition RectangleFlashAnimatorComponent.h:14
Definition Rectangle_w_Color.h:6
Definition RigidBodyComponent.h:5
Definition SphereComponent.h:6
Definition SpringComponent.h:6
Definition SpriteComponent.h:17
Definition Triangle_w_Color.h:6