Быстрое начало работы с ECS ============================ .. _ecs-quickstart: Создание первой сцены --------------------- .. code-block:: cpp :linenos: #include // 1. Создаем сцену prism::scene::Scene scene; // 2. Создаем сущность игрока auto player = scene.createEntity(); // 3. Добавляем компоненты scene.addComponent(player, Transform{0, 0, 0}); scene.addComponent(player, Renderable{"player.obj"}); scene.addComponent(player, Health{100}); Добавляем стандартный ресурс TimeResource и его систему TimeSystem --------------- .. code-block:: cpp scene.setResource(TimeResource{}); scene.registerSystem(&scene); Создание системы ---------------- .. code-block:: cpp class MovementSystem : public prism::scene::ISystem { public: void update() override { // getEntitiesWith возвращает ссылку на вектор (копирования нет) auto entities = scene->getEntitiesWith(); for (auto entity : entities) { auto* transform = scene->getComponent(entity); auto* velocity = scene->getComponent(entity); transform->position.x += velocity->x * scene->getResource()->deltaTime; } } }; // Регистрируем систему scene.registerSystem(); Обновление сцены ---------------- .. code-block:: cpp void gameLoop() { while (running) { scene.update(); } }