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->addToGroup(Manager::groupRenderSprites);entity->addComponent<
SpriteComponent>(); }},
31static const std::unordered_map<std::string, std::function<void(
Entity*)>> removeComponentMap = {
33 {
"SpriteComponent", [](
Entity* entity) { entity->removeGroup(Manager::groupRenderSprites); entity->removeComponent<
SpriteComponent>(); }},
54static const std::unordered_map<std::string, ComponentID> componentNameToID = {
55 {
"TransformComponent", GetComponentTypeID<TransformComponent>()},
56 {
"SpriteComponent", GetComponentTypeID<SpriteComponent>()},
57 {
"ColliderComponent", GetComponentTypeID<ColliderComponent>()},
58 {
"Triangle_w_Color", GetComponentTypeID<Triangle_w_Color>()},
59 {
"Rectangle_w_Color", GetComponentTypeID<Rectangle_w_Color>()},
60 {
"Line_w_Color", GetLinkComponentTypeID<Line_w_Color>()},
61 {
"SpringComponent", GetLinkComponentTypeID<SpringComponent>()},
62 {
"BoxComponent", GetComponentTypeID<BoxComponent>()},
63 {
"SphereComponent", GetComponentTypeID<SphereComponent>()},
64 {
"AnimatorComponent", GetComponentTypeID<AnimatorComponent>()},
65 {
"MovingAnimatorComponent", GetComponentTypeID<MovingAnimatorComponent>()},
66 {
"FlashAnimatorComponent", GetComponentTypeID<FlashAnimatorComponent>()},
67 {
"LineFlashAnimatorComponent", GetLinkComponentTypeID<LineFlashAnimatorComponent>()},
68 {
"RectangleFlashAnimatorComponent", GetComponentTypeID<RectangleFlashAnimatorComponent>()},
69 {
"RigidBodyComponent", GetComponentTypeID<RigidBodyComponent>()},
70 {
"PortComponent", GetComponentTypeID<PortComponent>()},
71 {
"PortSlotComponent", GetComponentTypeID<PortSlotComponent>()},
72 {
"PathLinkerComponent", GetComponentTypeID<PathLinkerComponent>()},
73 {
"EmptyPythonCodeComponent", GetComponentTypeID<EmptyPythonCodeComponent>()},
74 {
"LinkPythonCodeComponent", GetComponentTypeID<LinkPythonCodeComponent>()},
78static const std::unordered_map<std::string, std::function<
BaseComponent* (
Entity*)>> getComponentMap = {
103static void AddComponentByName(
const std::string& componentName,
Entity* entity) {
104 auto it = addComponentMap.find(componentName);
105 if (it != addComponentMap.end()) {
109 entity->getManager()->aboutTo_updateActiveEntities();
113static void RemoveComponentByName(
const std::string& componentName,
Entity* entity) {
114 auto it = removeComponentMap.find(componentName);
115 if (it != removeComponentMap.end()) {
119 entity->getManager()->aboutTo_updateActiveEntities();
123static BaseComponent* getComponentByName(
const std::string& componentName,
Entity* entity) {
124 auto it = getComponentMap.find(componentName);
125 if (it != getComponentMap.end()) {
126 return it->second(entity);
Definition AnimatorComponent.h:13
Definition BoxComponent.h:6
Definition ColliderComponent.h:11
Definition EmptyPythonCodeComponent.h:7
Definition FlashAnimatorComponent.h:10
Definition LineFlashAnimatorComponent.h:14
Definition Line_w_Color.h:6
Definition LinkPythonCodeComponent.h:7
Definition MovingAnimatorComponent.h:10
Definition PathLinkerComponent.h:6
Definition PortComponent.h:8
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:15
Definition Triangle_w_Color.h:6