assert_valid(entity);
uint32_t index = entity.index();
auto mask = entity_component_mask_[entity.index()];
+ event_manager_.emit<EntityDestroyedEvent>(Entity(this, entity));
for (size_t i = 0; i < component_pools_.size(); i++) {
BasePool *pool = component_pools_[i];
- if (pool && mask.test(i)) {
- pool->removeComponent(Entity(this, entity));
+ if (pool && mask.test(i))
pool->destroy(index);
- }
}
- event_manager_.emit<EntityDestroyedEvent>(Entity(this, entity));
entity_component_mask_[index].reset();
entity_version_[index]++;
free_list_.push_back(index);
#include <cassert>
#include <vector>
-#include "entityx/EntityClass.h"
-
namespace entityx {
/**
}
virtual void destroy(std::size_t n) = 0;
- virtual void removeComponent(Entity entity) = 0;
protected:
std::vector<char *> blocks_;
T *ptr = static_cast<T*>(get(n));
ptr->~T();
}
-
- virtual void removeComponent(Entity entity) override {
- entity.remove<T>();
- }
};
} // namespace entityx
#include <vector>
#include "entityx/3rdparty/catch.hpp"
#include "entityx/help/Pool.h"
-#include "entityx/Entity.h"
struct Position {
explicit Position(int *ptr = nullptr) : ptr(ptr) {