From c92a5aa0c1ec52650e5a9362bfbd347eb0bd1db5 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Thu, 7 Mar 2024 11:59:43 +0800 Subject: [PATCH] Update README-RU.md --- README-RU.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/README-RU.md b/README-RU.md index b4bf5fc..cb5ac23 100644 --- a/README-RU.md +++ b/README-RU.md @@ -401,7 +401,36 @@ class Aspect : EcsAspect ## Запросы -Используйте метод-запрос `EcsWorld.Where(out TAspcet aspect)` для получения необходимого системе набора сущностей. Запросы работают в связке с аспектами, аспекты определяют ограничения запросов, результатом запроса становится группа сущностей удовлетворяющая условиям аспекта. По умолчанию запрос делает выборку из всех сущностей в мире, но так же можно сделать выборку из определенной группы сущностей, для этого используйте `EcsWorld.WhereFor(EcsReadonlyGroup sourceGroup, out TAspcet aspect)` +Используйте метод-запрос `EcsWorld.Where(out TAspcet aspect)` для получения необходимого системе набора сущностей. Запросы работают в связке с аспектами, аспекты определяют ограничения запросов, результатом запроса становится группа сущностей удовлетворяющая условиям аспекта. По умолчанию запрос делает выборку из всех сущностей в мире, но так же запросы можно применять и к коллекциям фреймворка(в этом плане это чемто похоже на Where из Linq). +Пример: +``` c# +public class SomeDamageSystem : IEcsRun, IEcsInject +{ + class Aspect : EcsAspect + { + public EcsPool healths; + public EcsPool damages; + public EcsTagPool isInvulnerables; + protected override void Init(Builder b) + { + healths = b.Include(); + damages = b.Include(); + isInvulnerables = b.Include(); + } + } + EcsDefaultWorld _world; + public void Inject(EcsDefaultWorld world) => _world = world; + + public void Run() + { + foreach (var e in _world.Where(out Aspect a)) + { + // Сюда попадают сущности с компонентами Health, Damage и без IsInvulnerable + a.healths.Get(e).points -= a.damages.Get(e).points; + } + } +} +``` ## Группа Группы это структуры данных для хранения множества сущностей с O(1) операциями добавления/удаления/проверки наличия и т.д. Реализованы классом `EcsGroup` и структурой `EcsReadonlyGroup`.