diff --git a/README-RU.md b/README-RU.md index 3a6c75d..08c6b1a 100644 --- a/README-RU.md +++ b/README-RU.md @@ -39,7 +39,7 @@ * [Запрос](#Запрос) * [Модули](#Модули) * [Debug](#Debug) - * [Атрибуты](#Атрибуты) + * [Debug-Атрибуты](#Debug-Атрибуты) * [Debug-Сервис](#Debug-Сервис) * [Расширения](#Расширения) @@ -252,35 +252,59 @@ WorldComponent component = _world.Get(); > эта функция будет описана в ближайшее время ## Субъект -Это классы наследуемые от EcsSubject, которые используются как посредник для взаимодействия с сущностями. - +Это классы наследуемые от EcsSubject, которые используются как посредник для взаимодействия с сущностями. Субъекты ондовременно являются кешем пулов и ограничением для запросов сущностей. +``` csharp +using DCFApixels.DragonECS; +... +class Subject : EcsSubject +{ + public EcsPool poses; + public EcsPool velocities; + + // вместо конструктора можно использовать виртуальную функцию Init(Builder b) + public Subject(Builder b) + { + // кешируется пул и Pose добавляется во включающее ограничение. + poses = b.Include(); + + // кешируется пул и Velocity добавляется во включающее ограничение. + velocities = b.Include(); + + // FreezedTag добавляется в исключающее ограничение. + b.Exclude(); + } +} +``` + ## Запросы Используйте метод-запрос `EcsWorld.Where(out TSubject subject)` для получения необходимого системе набора сущностей. Запросы работают в связке с субъектами, субъекты определяют ограничения запросов, результатом запроса становится группа сущностей удовлетворяющая условиям субъекта. По умолчанию запрос делает выборку из всех сущностей в мире, но так же можно сделать выборку из определенной группы сущностей, для этого используйте `EcsWorld.WhereFor(EcsReadonlyGroup sourceGroup, out TSubject subject)` ## Группа -Группы это структуры данных для хранения списка сущностей и с быстрыми операциями добавления/удаления/проверки наличия и т.д. Реализованы классом `EcsGroup` и структурой `EcsReadonlyGroup`. -Группы могут использоваться для реактивной фильтрации сущностей +Группы это структуры данных для хранения множества сущностей и с быстрыми операциями добавления/удаления/проверки наличия и т.д. Реализованы классом `EcsGroup` и структурой `EcsReadonlyGroup`. # Debug Фреймворк предоставляет дополнительные инструменты для отладки и логирования, не зависящие от среды. -## Атрибуты -В чистом виде атрибуты не имеют применения, но используются в интеграциях с движками для задания отображения в отладочных инструментах и редакторах. +## Debug-Атрибуты +В чистом виде дебаг-атрибуты не имеют применения, но используются в интеграциях с движками для задания отображения в отладочных инструментах и редакторах. ``` c# -// Задает пользовательское название типа, по умолчанию используется имя типа. using DCFApixels.DragonECS; -... + +// Задает пользовательское название типа, по умолчанию используется имя типа. [DebugName("SomeComponent")] + // Задает цвет типа в системе rgb, где каждый канал принимает значение от 0 до 255, по умолчанию белый. -// Выбрать цвет можно как вручную задав rgb значения, так и использовать заранее заготовленные цвета в enum DebugColor. -[DebugColor(DebugColor.Red)] +[DebugColor(DebugColor.Red)] // или [DebugColor(255, 0, 0)] + // Добавляет описание типу. [DebugDescription("The quick brown fox jumps over the lazy dog")] + // Скрывает тип. [DebugHide] public struct Component { } ``` ## EcsDebug -Имеет набор методов для отладки и логирования. Реализован как статический класс вызывающий методы Debug-сервисов. Debug-сервисы являются посредниками между системами отладки среды и EcsDebug. Это позволяет не изменяя отладочный код проекта, переносить его на другие движки, достаточно только реализовать специальный Debug-сервис. +Имеет набор методов для отладки и логирования. Реализован как статический класс вызывающий методы Debug-сервисов. Debug-сервисы являются посредниками между системами отладки среды и EcsDebug. Это позволяет не изменяя отладочный код проекта, переносить его на другие движки, достаточно только реализовать специальный Debug-сервис. + По умолчанию используется `DefaultDebugService` который выводит логи в консоль. Для реализации пользовательского создайте класс наследуемый от `DebugService` и реализуйте абстрактные члены класса. # Расширения * [Автоматическое внедрение зависимостей](https://github.com/DCFApixels/DragonECS-AutoInjections)