diff --git a/README.md b/README.md index 3e009b7..abef5ea 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ * [ЧаВо](#ЧаВо) # Социальные ресурсы -[![discord](https://img.shields.io/discord/404358247621853185.svg?label=enter%20to%20discord%20server&style=for-the-badge&logo=discord)](https://discord.gg/5GZVde6) +[![discord](https://img.shields.io/discord/404358247621853185.svg?label=enter%20to%20discord%20server&style=for-the-badge&logo=discord)](https://discord.gg/UQjdcbcHSf) # Установка @@ -299,10 +299,15 @@ 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 @@ -322,6 +327,11 @@ class EcsStartup { [![](https://github.com/7Bpencil/sharpPhysics/raw/master/pictures/preview.png)](https://github.com/7Bpencil/sharpPhysics) +## Без исходников + +* [Microbiome (WIP)](https://vk.com/microbiomegame) + + [![](https://img.youtube.com/vi/WTciasBN2eQ/0.jpg)](https://www.youtube.com/watch?v=WTciasBN2eQ) # Расширения * [Инъекция зависимостей](https://github.com/Leopotam/ecslite-di) diff --git a/package.json b/package.json index fca7180..7dcde5d 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "displayName": "LeoECS Lite", "description": "LeoECS Lite - легковесный ECS-фреймворк, основанный на структурах. Производительность, нулевые или минимальные аллокации, минимизация использования памяти, отсутствие зависимостей от любого игрового движка - это основные цели данного фреймворка.", "unity": "2020.3", - "version": "2023.2.22", + "version": "2023.3.22", "keywords": [ "leoecslite", "leoecs", diff --git a/src/entities.cs b/src/entities.cs index 155aae3..eac3216 100644 --- a/src/entities.cs +++ b/src/entities.cs @@ -74,12 +74,12 @@ public static EcsPackedEntity PackEntity (this EcsWorld world, int entity) { [MethodImpl (MethodImplOptions.AggressiveInlining)] public static bool Unpack (this in EcsPackedEntity packed, EcsWorld world, out int entity) { - if (!world.IsAlive () || !world.IsEntityAliveInternal (packed.Id) || world.GetEntityGen (packed.Id) != packed.Gen) { - entity = -1; - return false; - } entity = packed.Id; - return true; + return + world != null + && world.IsAlive () + && world.IsEntityAliveInternal (packed.Id) + && world.GetEntityGen (packed.Id) == packed.Gen; } [MethodImpl (MethodImplOptions.AggressiveInlining)] @@ -98,14 +98,13 @@ public static EcsPackedEntityWithWorld PackEntityWithWorld (this EcsWorld world, [MethodImpl (MethodImplOptions.AggressiveInlining)] public static bool Unpack (this in EcsPackedEntityWithWorld packedEntity, out EcsWorld world, out int entity) { - if (packedEntity.World == null || !packedEntity.World.IsAlive () || !packedEntity.World.IsEntityAliveInternal (packedEntity.Id) || packedEntity.World.GetEntityGen (packedEntity.Id) != packedEntity.Gen) { - world = null; - entity = -1; - return false; - } world = packedEntity.World; entity = packedEntity.Id; - return true; + return + world != null + && world.IsAlive () + && world.IsEntityAliveInternal (packedEntity.Id) + && world.GetEntityGen (packedEntity.Id) == packedEntity.Gen; } [MethodImpl (MethodImplOptions.AggressiveInlining)] @@ -113,4 +112,4 @@ public static bool EqualsTo (this in EcsPackedEntityWithWorld a, in EcsPackedEnt return a.Id == b.Id && a.Gen == b.Gen && a.World == b.World; } } -} \ No newline at end of file +} diff --git a/src/systems.cs b/src/systems.cs index c013225..9f08f1b 100644 --- a/src/systems.cs +++ b/src/systems.cs @@ -60,7 +60,7 @@ public class EcsSystems : IEcsSystems { readonly List<IEcsPostRunSystem> _postRunSystems; readonly object _shared; #if DEBUG - bool _inited; + protected bool _inited; #endif public EcsSystems (EcsWorld defaultWorld, object shared = null) {