From abfc6601bd494d738b6b9a6b68a3e3137a795b21 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Thu, 18 Jan 2024 21:25:59 +0800 Subject: [PATCH 01/13] fix --- src/Pools/EcsHybridPool.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Pools/EcsHybridPool.cs b/src/Pools/EcsHybridPool.cs index 7c40337..37fb85a 100644 --- a/src/Pools/EcsHybridPool.cs +++ b/src/Pools/EcsHybridPool.cs @@ -78,9 +78,9 @@ namespace DCFApixels.DragonECS public void Add(int entityID, T component) { HybridMapping mapping = _source.GetHybridMapping(component.GetType()); - mapping.GetTargetTypePool().AddRefInternal(entityID, component, false); + mapping.GetTargetTypePool().AddRefInternal(entityID, component, true); foreach (var pool in mapping.GetPools()) - pool.AddRefInternal(entityID, component, true); + pool.AddRefInternal(entityID, component, false); } public void Set(int entityID, T component) { @@ -136,9 +136,9 @@ namespace DCFApixels.DragonECS { var component = Get(entityID); HybridMapping mapping = _source.GetHybridMapping(component.GetType()); - mapping.GetTargetTypePool().DelInternal(entityID, false); + mapping.GetTargetTypePool().DelInternal(entityID, true); foreach (var pool in mapping.GetPools()) - pool.DelInternal(entityID, true); + pool.DelInternal(entityID, false); } public void TryDel(int entityID) { From bada141c125e6f6a52e181f9f00c0c2eede00477 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Thu, 18 Jan 2024 21:26:34 +0800 Subject: [PATCH 02/13] up version to 0.8.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 911e90e..f6906aa 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "displayName": "DragonECS", "description": "C# Entity Component System Framework", "unity": "2020.3", - "version": "0.8.5", + "version": "0.8.6", "repository": { "type": "git", "url": "https://github.com/DCFApixels/DragonECS.git" From cb9e9be7bae86d1b9ca13bc963a1f38db89d7743 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sat, 3 Feb 2024 17:46:30 +0800 Subject: [PATCH 03/13] Update README.md --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 0f47083..d88513e 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,6 @@ The [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Framework aims to maximize usability, modularity, extensibility and performance of dynamic entity changes. Without code generation and dependencies. Inspired by [LeoEcs](https://github.com/Leopotam/ecslite). -> [!IMPORTANT] -> And a Happy New Year. - > [!WARNING] > The project is a work in progress, API may change. > From 3bbbc42c3ef811eb0570dcb135f867289752b295 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sat, 3 Feb 2024 17:46:49 +0800 Subject: [PATCH 04/13] Update README-RU.md --- README-RU.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README-RU.md b/README-RU.md index c6ffaf4..22ade79 100644 --- a/README-RU.md +++ b/README-RU.md @@ -14,9 +14,6 @@ Данный [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Фреймворк нацелен на максимальную удобность, модульность, расширяемость и производительность динамического изменения сущностей. Без генерации кода и зависимостей. Вднохновлен [LeoEcs](https://github.com/Leopotam/ecslite). -> [!IMPORTANT] -> И с Новым Годом - > [!WARNING] > Проект в стадии разработки. API может меняться. > Readme еще не завершен From 0e4dfa253896f45e88ae491bb16205121923d749 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Fri, 9 Feb 2024 22:43:55 +0800 Subject: [PATCH 05/13] up version to 0.8.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f6906aa..d3e69ca 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "displayName": "DragonECS", "description": "C# Entity Component System Framework", "unity": "2020.3", - "version": "0.8.6", + "version": "0.8.7", "repository": { "type": "git", "url": "https://github.com/DCFApixels/DragonECS.git" From 727e54d1e9c326429602764f17c2003760a5ac2c Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Fri, 9 Feb 2024 23:05:55 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E5=8A=A0=20=E6=96=B0=E5=B9=B4=E5=BF=AB?= =?UTF-8?q?=E4=B9=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-RU.md | 3 +++ README.md | 3 +++ 2 files changed, 6 insertions(+) diff --git a/README-RU.md b/README-RU.md index 22ade79..bfebce9 100644 --- a/README-RU.md +++ b/README-RU.md @@ -14,6 +14,9 @@ Данный [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Фреймворк нацелен на максимальную удобность, модульность, расширяемость и производительность динамического изменения сущностей. Без генерации кода и зависимостей. Вднохновлен [LeoEcs](https://github.com/Leopotam/ecslite). +> [!IMPORTANT] +> 新年快乐! + > [!WARNING] > Проект в стадии разработки. API может меняться. > Readme еще не завершен diff --git a/README.md b/README.md index d88513e..6866760 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,9 @@ The [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Framework aims to maximize usability, modularity, extensibility and performance of dynamic entity changes. Without code generation and dependencies. Inspired by [LeoEcs](https://github.com/Leopotam/ecslite). +> [!IMPORTANT] +> 新年快乐! + > [!WARNING] > The project is a work in progress, API may change. > From 796e69adb1945e5a6a774e4c8652995559e5dda1 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Fri, 9 Feb 2024 23:58:54 +0800 Subject: [PATCH 07/13] Update README-RU.md --- README-RU.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/README-RU.md b/README-RU.md index bfebce9..9d60bd4 100644 --- a/README-RU.md +++ b/README-RU.md @@ -36,6 +36,7 @@ - [Процессы](#процессы) - [Мир](#мир) - [Компоненты мира](#компоненты-мира) + - [Конфигурация мира](#конфигурация-мира) - [Пул](#пул) - [Аспект](#аспект) - [Запросы](#запросы) @@ -349,10 +350,18 @@ public struct WorldComponent : IEcsWorldComponent } } ``` - -> Компоненты можно применять для создания расширений в связке с методами расширений. +### Конфигурация мира +При создании мира, в конструктор можно передать реализацию интерфейса `IEcsWorldConfig`. Реализующие его классы своего рода контейнеры для конфигов. По умолчанию уже реализован стандартный контейнер `EcsWorldConfig` и `Get`/`Set` методы для базовой конфигурации мира. + +``` csharp +EcsWorldConfig config = new EcsWorldConfig() + .Set_EntitiesCapacity(512); +_world = new EcsDefaultWorld(config); +``` + +> Компоненты и конфиги можно применять для создания расширений в связке с методами расширений. ## Пул Является контейнером для компонентов, предоставляет методы для добавления/чтения/редактирования/удаления компонентов на сущности. Есть несколько видов пулов, для разных целей: * `EcsPool` - универсальный пул, хранит struct-компоненты реализующие интерфейс `IEcsComponent`; From 7e282f78f0fd7c47d153322e9caf5e505e04d247 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sun, 11 Feb 2024 20:00:40 +0800 Subject: [PATCH 08/13] fix --- src/EcsWorld.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/EcsWorld.cs b/src/EcsWorld.cs index 895c876..fc148cc 100644 --- a/src/EcsWorld.cs +++ b/src/EcsWorld.cs @@ -451,7 +451,9 @@ namespace DCFApixels.DragonECS _listeners.InvokeOnReleaseDelEntityBuffer(buffser); for (int i = 0; i < buffser.Length; i++) { - _entityDispenser.Release(buffser[i]); + int e = buffser[i]; + _entityDispenser.Release(e); + unchecked{ _gens[e]--; }//up gen } _freeSpace += count;// _entitesCapacity - _entitiesCount; } From f87d6d01c82d3f1fd3bc6d3c88f08cafadc16f58 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sun, 11 Feb 2024 20:01:08 +0800 Subject: [PATCH 09/13] upversion to 0.8.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d3e69ca..51cafba 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "displayName": "DragonECS", "description": "C# Entity Component System Framework", "unity": "2020.3", - "version": "0.8.7", + "version": "0.8.8", "repository": { "type": "git", "url": "https://github.com/DCFApixels/DragonECS.git" From f3552268510d7784c77472eb3acccc28d142f2f8 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sat, 17 Feb 2024 01:16:02 +0800 Subject: [PATCH 10/13] Update README-RU.md --- README-RU.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README-RU.md b/README-RU.md index 9d60bd4..5c8c7c7 100644 --- a/README-RU.md +++ b/README-RU.md @@ -182,9 +182,9 @@ EcsPipelone pipeline = EcsPipeline.New() //... -class SomeSystem : IInject, IEcsRunProcess +class SomeSystem : IEcsInject, IEcsRunProcess { - // Для внедрения используется интерфейс IInject и его метод Inject(T obj) + // Для внедрения используется интерфейс IEcsInject и его метод Inject(T obj) SomeData _someData public void Inject(SomeData obj) => _someData = obj; From 603c8f2a365dcaf1f42cc2089fde8ed575f81b39 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Fri, 23 Feb 2024 23:52:09 +0800 Subject: [PATCH 11/13] Update README-RU.md --- README-RU.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README-RU.md b/README-RU.md index 5c8c7c7..82697cb 100644 --- a/README-RU.md +++ b/README-RU.md @@ -768,6 +768,9 @@ The type or namespace name 'ReadOnlySpan<>' could not be found (are you missing ``` Чтобы починить добавте директиву `ENABLE_DUMMY_SPAN` в `Project Settings/Player/Other Settings/Scripting Define Symbols`. +## Как Выключать/Включать системы? +Напряму - никак. +Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Решением будет разделить IEcsRunProcess на несколько процессов, и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска процесса этого интерфейса и получайте раннер через `EcsPipeline.GetRunner()`.
# Обратная связь From d57954c7c71d418977cea091afe69efa7c489987 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Sat, 24 Feb 2024 00:01:56 +0800 Subject: [PATCH 12/13] Update README-RU.md --- README-RU.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README-RU.md b/README-RU.md index 82697cb..c8734c3 100644 --- a/README-RU.md +++ b/README-RU.md @@ -769,8 +769,10 @@ The type or namespace name 'ReadOnlySpan<>' could not be found (are you missing Чтобы починить добавте директиву `ENABLE_DUMMY_SPAN` в `Project Settings/Player/Other Settings/Scripting Define Symbols`. ## Как Выключать/Включать системы? -Напряму - никак. -Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Решением будет разделить IEcsRunProcess на несколько процессов, и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска процесса этого интерфейса и получайте раннер через `EcsPipeline.GetRunner()`. +Напряму - никак.
+Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Есть 2 решения:
++ Если измненеия процесса глобальные, то создать новый `EcsPipeline` и в цикле обновления движка запускать соотвествующий пайплайн. ++ Разделить `IEcsRunProcess` на несколько процессов и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска этого интерфейса и получайте раннер через `EcsPipeline.GetRunner()`.
# Обратная связь From 19b8929a66a5f393d49482e8e70e5956e7474e28 Mon Sep 17 00:00:00 2001 From: Mikhail <99481254+DCFApixels@users.noreply.github.com> Date: Mon, 26 Feb 2024 10:14:55 +0800 Subject: [PATCH 13/13] Update README-RU.md --- README-RU.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README-RU.md b/README-RU.md index c8734c3..1cdad1c 100644 --- a/README-RU.md +++ b/README-RU.md @@ -54,6 +54,15 @@
# Установка +Семантика версионирования - [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md) +## Окружение +Обязательные требования: ++ Минимальная версия C# 7.3; + +Опционально: ++ Минимальная версия Unity 2020.1.0; + +## Установка для Unity * ### Unity-модуль Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) или ручного добавления в `Packages/manifest.json`: ``` @@ -62,9 +71,6 @@ https://github.com/DCFApixels/DragonECS.git * ### В виде иходников Фреймворк так же может быть добавлен в проект в виде исходников. -### Версионирование -В DragonECS применяется следующая семантика версионирования: [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md) -
# Основные концепции