LeoECS - 1 год разработки Entity Component System фреймворка

Как быстро летит время - LeoECS Entity Component System фреймворк существует уже целый год! Релизы выходили каждый месяц и вот настало время публикации v20181222 - 12-го по счету. Какие же изменения и улучшения произошли в нем?

Изменения

  • В фильтры вернулась возможность подписываться на события добавления/удаления сущностей в них.
  • EcsSystems получили возможность именования. Это может быть полезно, когда используются вложенные EcsSystems - для лучшего понимания, что это за группа систем.
  • OneFrame-компоненты стали корректно работать при использовании с EcsWorld.EnsureComponent. Вообще, [EcsOneFrame]-атрибуты на компонентах сильно упрощают реализацию событий, которые должны существовать ровно 1 фрейм. Все помеченные данным атрибутом компоненты будут автоматически удалены при вызове одного единственного метода EcsWorld.RemoveOneFrameComponents().
  • Все связанные с LeoECS модули получили поддержку работы в качестве unity packages. Да, начиная с Unity2018.3 их можно ставить прямо с репозиториев по прямому git-линку и видеть их в списке модулей проекта:

    Для этого достаточно открыть в текущем проекте файл Packages/manifest.json и в секцию dependencies внести ссылки на модули:

    1
    2
    3
    4
    5
    6
    "com.leopotam.ecs": "https://github.com/Leopotam/ecs.git#develop",
    "com.leopotam.ecs-reactive": "https://github.com/Leopotam/ecs-reactive.git#develop",
    "com.leopotam.ecs-threads": "https://github.com/Leopotam/ecs-threads.git#develop",
    "com.leopotam.ecs-types": "https://github.com/Leopotam/ecs-types.git#develop",
    "com.leopotam.ecs-ui": "https://github.com/Leopotam/ecs-ui.git#develop",
    "com.leopotam.ecs-unityintegration": "https://github.com/Leopotam/ecs-unityintegration.git#develop"

    Внимание: в системе должен быть установлен Git с корректно прописанными путями для доступа из командной строки!

    Все модули автоматически скачаются и подключатся к проекту. Для того, чтобы обновить их, нужно будет вручную удалить lock-секцию в файле Packages/manifest.json. Да, не очень удобно, но разработчики менеджера модулей обещались сделать поддержку обновлений прямо в интерфейсе.