#include #include struct position { float x; float y; }; struct velocity { float dx; float dy; }; void update(entt::registry ®istry) { auto view = registry.view(); for(auto entity: view) { // gets only the components that are going to be used ... auto &vel = view.get(entity); vel.dx = 0.; vel.dy = 0.; // ... } } void update(std::uint64_t dt, entt::registry ®istry) { registry.view().each([dt](auto &pos, auto &vel) { // gets all the components of the view at once ... pos.x += vel.dx * dt; pos.y += vel.dy * dt; // ... }); } int main() { entt::registry registry; std::uint64_t dt = 16; for(auto i = 0; i < 10; ++i) { auto entity = registry.create(); registry.emplace(entity, i * 1.f, i * 1.f); if(i % 2 == 0) { registry.emplace(entity, i * .1f, i * .1f); } } update(dt, registry); update(registry); // ... return EXIT_SUCCESS; }