diff --git a/README-RU.md b/README-RU.md index 2d09c56..29dc718 100644 --- a/README-RU.md +++ b/README-RU.md @@ -12,6 +12,10 @@ Данный [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Фреймворк нацелен на максимальную удобность использования, модульность, расширяемость и производительность динамического изменения сущностей. > **NOTICE:** Проект в стадии разработки. API может меняться. +## Languages +* [Русский](https://github.com/DCFApixels/DragonECS/blob/main/README-RU.md) +* [English(WIP)](https://github.com/DCFApixels/DragonECS) + ## Оглавление * [Установка](#Установка) * [Unity-модуль](#Unity-модуль) @@ -27,6 +31,8 @@ * [Группа](#Группа) * [Субъект](#Субъект) * [Запрос](#Запрос) + * [Модули](#Модули) +* [Рекомендации](#Рекомендации) * [Debug](#Debug) * [Атрибуты](#Атрибуты) * [EcsDebugUtility](#EcsDebugUtility) @@ -130,12 +136,40 @@ public sealed class EcsRunRunner : EcsRunner, IEcsRunProcess ## Запросы Используйте метод-запрос `EcsWorld.Where(out TSubject subject)` для получения необходимого системе набора сущностей. Запросы работают в связке с субъектами, субъекты определяют ограничения запросов, результатом запроса становится группа сущностей удовлетворяющия условиям субъекта. По умолчанию запрос делает выборку из всех сущностей в мире, но так же можно сделать выборку из определенной группы сущностей, для этого используйте `EcsWorld.WhereFor(EcsReadonlyGroup sourceGroup, out TSubject subject)` +## Модули +Группы систем реализующие общую фичу можно объединять в модули, и просто добавлять модули в Pipeline. +```csharp +using DCFApixels.DragonECS; +class Module : IEcsModule +{ + public void Import(EcsPipeline.Builder b) + { + b.Add(new System1()); + b.Add(new System2(), EcsConsts.END_LAYER); + b.Add(new System3()); + } +} +``` +```csharp +_pipeline = EcsPipeline.New() + ... + .AddModule(new Module()) + ... + .BuildAndInit(); +``` + +# Рекомендации +## Рекомендации по реаоизации систем +Системы делать максимально независимыми, без ссылок на другие системы. + # Debug Фреймворк предоставляет дополнительные интрументы для отладки и логирования, не зависящие от среды. ## Атрибуты В чистом виде атрибуты не имеют применения, но испольщуются в интеграциях с движками для задания отображения в отладочных интурментах и редакторах. ``` csharp // Задает пользовательское название типа, по умолчанию используется имя типа. +using DCFApixels.DragonECS; +... [DebugName("SomeComponent")] // Задает цвет типа в системе rgb, где каждый канал принимает занчение от 0 до 255, по умолчанию белый. // ВЫбрать цвет можно как вручную задав rgb значения, так и использовать заранее заготовленные цвета в enum DebugColor. @@ -149,8 +183,7 @@ public struct Component { } ## EcsDebugUtility Имеет набор методов для упрощения получения данных из Debug-Aтрибутов. ## EcsDebug -Имеет набор методов для отладки и логирования. Реализован как статический класс вызывающий методы Debug-сервисов. Debug-сервисы являются посредниками между системами отладки среды и EcsDebug. Это позволяет не изменяя отладочный код проекта, переносить его на другие движки, достаточно только реализовать специальный Debug-сервис. - +Имеет набор методов для отладки и логирования. Реализован как статический класс вызывающий методы Debug-сервисов. Debug-сервисы являются посредниками между системами отладки среды и EcsDebug. Это позволяет не изменяя отладочный код проекта, переносить его на другие движки, достаточно только реализовать специальный Debug-сервис. По умолчанию используется `DefaultDebugService` который выводит логи в консоль. Для реализации пользовательского создайте класс наследуемый от `DebugService` и реализайте абстрактные члены класса. # Расширения * [Автоматическое внедрение зависимостей](https://github.com/DCFApixels/DragonECS-AutoInjections)