From 7d5fcceb601901265dd6f74af36272e5b4560e99 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Wed, 31 May 2023 04:04:25 +0800 Subject: [PATCH] Update README-RU.md --- README-RU.md | 47 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/README-RU.md b/README-RU.md index 79b1a5d..b8fc628 100644 --- a/README-RU.md +++ b/README-RU.md @@ -195,26 +195,32 @@ EcsPipelone pipeline = EcsPipeline.New() * `EcsConst.POST_END_LAYER` ## Процессы -Процессы - это очереди систем реализующие общий интерфейс, например IEcsRunProcess. Для запуска процессов используются Runner-ы. Система ранеров и процессов может использоваться для создания реактивного поведения или для управления очередью вызова систем. Встроенные процессы вызываются автоматически, для ручного запуска испольщуйте раннеры получаемые из EcsPipeline.GetRunner(). -> Метод GetRunner относительно медленный, поэтому рекомендуется кешировать полученные раннеры. +Процессы - это очереди систем реализующие общий интерфейс, например `IEcsRunProcess`. Для запуска процессов используются Runner-ы. Встроенные процессы вызываются автоматически, для запуска пользовательских процессов используйте раннеры получаемые из `EcsPipeline.GetRunner()`. +> Рекомендуется кешировать полученные через GetRunner раннеры.
-Встроенные процессы: +Встроенные процессы -* `IEcsPreInitProcess`, `IEcsInitProcess`, `IEcsRunProcess`, `IEcsDestroyProcess` - процессы жизненого цикла Pipeline -* `IEcsPreInject`, `IEcsInject` - процессы системы [внедрения зависимостей](#Внедрение-зависимостей) для Pipeline. -* `IEcsPreInitInjectProcess` - Так же процесс системы внедрения зависимостей, но работает в пределах до выполнения IEcsInitProcess, сигнализирует о инициализации предварительных внедрений и окончании. +* `IEcsPreInitProcess`, `IEcsInitProcess`, `IEcsRunProcess`, `IEcsDestroyProcess` - процессы жизненого цикла `EcsPipeline`. +* `IEcsPreInject`, `IEcsInject` - Процессы системы [внедрения зависимостей](#Внедрение-зависимостей). +* `IEcsPreInitInjectProcess` - Так же процесс системы [внедрения зависимостей](#Внедрение-зависимостей), но работает в пределах до выполнения IEcsInitProcess, сигнализирует о начале и окончании предварительных внедрений.
-### Пользовательские Процессы -Для добавления нового процесса создайте интерфейс наследованный от IEcsSystem и создайте раннер для него. Раннеры это классы реализующие интерфейс запускаемого процесса и наследуемые от EcsRunner. Пример реализации раннера для IEcsRunProcess: +
+Пользовательские процессы + +Для добавления нового процесса создайте интерфейс наследованный от `IEcsProcess` и создайте раннер для него. Раннер это класс реализующий интерфейс запускаемого процесса и наследуемый от EcsRunner. Пример: ```c# -public sealed class EcsRunRunner : EcsRunner, IEcsRunProcess +interface IDoSomethingProcess : IEcsProcess { - public void Run(EcsSession session) + void Do(); +} +sealed class DoSomethingProcessRunner : EcsRunner, IDoSomethingProcess +{ + public void Do() { - foreach (var item in targets) item.Run(session); + foreach (var item in targets) item.Do(); } } ``` @@ -225,24 +231,35 @@ public sealed class EcsRunRunner : EcsRunner, IEcsRunProcess > * Наследуемый класс `EcsRunner,` в качестве `TInterface` должен принимать реализованный интерфейс; > * Раннер не может быть размещен внутри другого класса. +
+ ## Мир Является контейнером для сущностей и компонентов. - -## Группа -Группы это структуры данных для хранения списка сущностей и с быстрыми операциями добавления/удаления/проверки наличия и т.д. Реализованы классом EcsGroup и структурой EcsReadonlyGroup. +> **NOTICE:** Необходимо вызывать EcsWorld.Destroy() у экземпляра мира если он больше не нужен. +### Компоненты мира +С помощью компонентов можно прикреплять дополнитеьные данные к мирам. Компоненты можно применять создания расширений в связке с методами расширений. +``` csharp +WorldComponent component = _world.Get(); +``` ## Пул Является контейнером для компонентов, предоставляет методы для добавления/чтения/редактирования/удаления компонентов на сущности. Есть несколько видов пулов, для разных целей * `EcsPool` - универсальный пул, хранит struct-компоненты реализующие интерфейс IEcsComponent; * `EcsTagPool` - подходит для хранения пустых компонентов-тегов, в сравнении с EcsPool имеет лучше оптимизацию памяти и дейсвий с пулом, хранит в себе struct-компоненты реализующие IEcsTagComponent; -Так же имеется возможность реализации пользовательского пула +Имеется возможность реализации пользовательского пула +> эта функция будет описана в ближайщее время + ## Субъект Это классы наследуемые от EcsSubject, которые используются как посредник для взаимодейсвия с сушностями. ## Запросы Используйте метод-запрос `EcsWorld.Where(out TSubject subject)` для получения необходимого системе набора сущностей. Запросы работают в связке с субъектами, субъекты определяют ограничения запросов, результатом запроса становится группа сущностей удовлетворяющия условиям субъекта. По умолчанию запрос делает выборку из всех сущностей в мире, но так же можно сделать выборку из определенной группы сущностей, для этого используйте `EcsWorld.WhereFor(EcsReadonlyGroup sourceGroup, out TSubject subject)` +## Группа +Группы это структуры данных для хранения списка сущностей и с быстрыми операциями добавления/удаления/проверки наличия и т.д. Реализованы классом `EcsGroup` и структурой `EcsReadonlyGroup`. +Группы могут использоваться для реактивной фильтрации сущностей + # Debug Фреймворк предоставляет дополнительные интрументы для отладки и логирования, не зависящие от среды. ## Атрибуты