Skip to content

Commit

Permalink
Merge branch 'release/2023.5.22'
Browse files Browse the repository at this point in the history
  • Loading branch information
Leopotam committed May 22, 2023
2 parents 6b83a51 + 12bdcd2 commit 957b3bb
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 30 deletions.
47 changes: 18 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,30 +164,31 @@ pool.Copy (srcEntity, dstEntity);
Является контейнером для хранения отфильтрованных сущностей по наличию или отсутствию определенных компонентов:
```c#
class WeaponSystem : IEcsInitSystem, IEcsRunSystem {
EcsFilter _filter;
EcsPool<Weapon> _weapons;

public void Init (IEcsSystems systems) {
// Получаем экземпляр мира по умолчанию.
EcsWorld world = systems.GetWorld ();

// Создаем новую сущность.
// Мы хотим получить все сущности с компонентом "Weapon" и без компонента "Health".
// Фильтр хранит только сущности, сами даные лежат в пуле компонентов "Weapon".
// Фильтр может собираться динамически каждый раз, но рекомендуется кеширование.
_filter = world.Filter<Weapon> ().Exc<Health> ().End ();

// Запросим и закешируем пул компонентов "Weapon".
_weapons = world.GetPool<Weapon> ();

// Создаем новую сущность для теста.
int entity = world.NewEntity ();

// И добавляем к ней компонент "Weapon".
var weapons = world.GetPool<Weapon>();
weapons.Add (entity);
// И добавляем к ней компонент "Weapon" - эта сущность должна попасть в фильтр.
_weapons.Add (entity);
}

public void Run (IEcsSystems systems) {
EcsWorld world = systems.GetWorld ();
// Мы хотим получить все сущности с компонентом "Weapon" и без компонента "Health".
// Фильтр может собираться динамически каждый раз, а может быть закеширован где-то.
var filter = world.Filter<Weapon> ().Exc<Health> ().End ();

// Фильтр хранит только сущности, сами даные лежат в пуле компонентов "Weapon".
// Пул так же может быть закеширован где-то.
var weapons = world.GetPool<Weapon>();

foreach (int entity in filter) {
ref Weapon weapon = ref weapons.Get (entity);
ref Weapon weapon = ref _weapons.Get (entity);
weapon.Ammo = System.Math.Max (0, weapon.Ammo - 1);
}
}
Expand Down Expand Up @@ -296,20 +297,6 @@ class EcsStartup {
}
```

# Статьи

* ["Создание dungeon crawler'а с LeoECS Lite. Часть 1"](https://habr.com/ru/post/661085/)

[![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/372/b1c/ad3/372b1cad308788dac56f8db1ea16b9c9.png)](https://habr.com/ru/post/661085/)

* ["Создание dungeon crawler'а с LeoECS Lite. Часть 2"](https://habr.com/ru/post/673926/)

[![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/63f/3ef/c47/63f3efc473664fdaaf1a249f258e2486.png)](https://habr.com/ru/post/673926/)

* ["Всё что нужно знать про ECS"](https://habr.com/ru/post/665276/)

[![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/3fd/5bc/544/3fd5bc5442b03a20d52a8003576056d4.png)](https://habr.com/ru/post/665276/)

# Проекты, использующие LeoECS Lite
## С исходниками

Expand Down Expand Up @@ -344,7 +331,9 @@ class EcsStartup {
* [EasyEvents](https://github.com/7Bpencil/ecslite-easyevents)
* [Entity command buffer](https://github.com/JimboA/EcsLiteEntityCommandBuffer)
* [Интеграция в редактор Unity на базе UIToolkit](https://github.com/Mitfart/LeoECSLite.UnityIntegration)
* [Unity Entity Converter (замена UniLeo)](https://github.com/AndreyBirchenko/LeoEcsLiteEntityConverter)
* [Unity Entity Converter](https://github.com/AndreyBirchenko/LeoEcsLiteEntityConverter)
* [Interval Systems](https://github.com/nenuacho/ecslite-interval-systems)
* [Quadtree Systems](https://github.com/nenuacho/ecslite-quadtree)

# Лицензия
Фреймворк выпускается под двумя лицензиями, [подробности тут](./LICENSE.md).
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"displayName": "LeoECS Lite",
"description": "LeoECS Lite - легковесный ECS-фреймворк, основанный на структурах. Производительность, нулевые или минимальные аллокации, минимизация использования памяти, отсутствие зависимостей от любого игрового движка - это основные цели данного фреймворка.",
"unity": "2020.3",
"version": "2023.4.22",
"version": "2023.5.22",
"keywords": [
"leoecslite",
"leoecs",
Expand Down

0 comments on commit 957b3bb

Please sign in to comment.