#include #include #include using namespace yage; #include #include struct Position : public Component { double x; double y; Position() = default; Position(double x_, double y_) : x(x_), y(y_) {} }; struct Size : public Component { double width; double height; Size() = default; Size(double w_, double h_) : width(w_), height(h_) {} }; class MovementSystem : public System { public: void update(double dt, EntityManager &em) override { std::cout << "New Iteration\n"; std::cout << " Position\n"; em.each([](Position &pos) { std::cout << " X: " << pos.x << ", Y: " << pos.y << "\n"; ++pos.x, ++pos.y; }); std::cout << " Size\n"; em.each([](Size &size) { std::cout << " WIDTH: " << size.width << ", HEIGHT: " << size.height << "\n"; size.width += 7; size.height += 10; }); } }; int main() { EntityManager em; Entity e1 = em.create_entity(); Entity e2 = em.create_entity(); MovementSystem s; std::cout << "e1: " << e1 << "\n"; em.add_component(e1, std::make_unique(10, 5)) .add_component(e1, std::make_unique(1, 5)) .add_component(e2, std::make_unique(5, 2)); s.update(60, em); s.update(60, em); em.delete_entity(e2); s.update(60, em); }