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