浏览代码

Lesson 10.9

Godzil 3 年之前
父节点
当前提交
e3f1c94098
共有 1 个文件被更改,包括 19 次插入1 次删除
  1. 19 1
      source/include/ECS.h

+ 19 - 1
source/include/ECS.h

@@ -105,7 +105,8 @@ public:
 
     /* Components */
     template <typename T, typename ...TArgs> void addComponent(Entity entity, TArgs&& ...args);
-
+    template <typename T> void removeComponent(Entity entity);
+    template <typename T> bool hasComponent(Entity entity);
 
     /* Systems */
 
@@ -143,4 +144,21 @@ template<typename T, typename ...TArgs> void Registry::addComponent(Entity entit
     componentPool->set(entityId, newComponent);
     entityComponentSignatures[entityId].set(componentId);
 }
+
+template <typename T> void Registry::removeComponent(Entity entity)
+{
+    const auto componentId = Component<T>::getId();
+    const auto entityId = entity.getId();
+
+    entityComponentSignatures[entityId].set(componentId, false);
+}
+
+template <typename T> bool Registry::hasComponent(Entity entity)
+{
+    const auto componentId = Component<T>::getId();
+    const auto entityId = entity.getId();
+
+    return entityComponentSignatures[entityId].test(componentId);
+}
+
 #endif /* GAMEENGINE_ECS_H */