Merge branch 'main' into dev

This commit is contained in:
Mikhail 2024-03-07 03:51:53 +08:00
commit 9561b7139b
3 changed files with 30 additions and 10 deletions

View File

@ -15,7 +15,7 @@
Данный [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Фреймворк нацелен на максимальную удобность, модульность, расширяемость и производительность динамического изменения сущностей. Без генерации кода и зависимостей. Вднохновлен [LeoEcs](https://github.com/Leopotam/ecslite). Данный [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Фреймворк нацелен на максимальную удобность, модульность, расширяемость и производительность динамического изменения сущностей. Без генерации кода и зависимостей. Вднохновлен [LeoEcs](https://github.com/Leopotam/ecslite).
> [!IMPORTANT] > [!IMPORTANT]
> И с Новым Годом > 新年快乐!
> [!WARNING] > [!WARNING]
> Проект в стадии разработки. API может меняться. > Проект в стадии разработки. API может меняться.
@ -36,6 +36,7 @@
- [Процессы](#процессы) - [Процессы](#процессы)
- [Мир](#мир) - [Мир](#мир)
- [Компоненты мира](#компоненты-мира) - [Компоненты мира](#компоненты-мира)
- [Конфигурация мира](#конфигурация-мира)
- [Пул](#пул) - [Пул](#пул)
- [Аспект](#аспект) - [Аспект](#аспект)
- [Запросы](#запросы) - [Запросы](#запросы)
@ -53,6 +54,15 @@
</br> </br>
# Установка # Установка
Семантика версионирования - [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md)
## Окружение
Обязательные требования:
+ Минимальная версия C# 7.3;
Опционально:
+ Минимальная версия Unity 2020.1.0;
## Установка для Unity
* ### Unity-модуль * ### Unity-модуль
Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) или ручного добавления в `Packages/manifest.json`: Поддерживается установка в виде Unity-модуля в при помощи добавления git-URL [в PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) или ручного добавления в `Packages/manifest.json`:
``` ```
@ -61,9 +71,6 @@ https://github.com/DCFApixels/DragonECS.git
* ### В виде иходников * ### В виде иходников
Фреймворк так же может быть добавлен в проект в виде исходников. Фреймворк так же может быть добавлен в проект в виде исходников.
### Версионирование
В DragonECS применяется следующая семантика версионирования: [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md)
</br> </br>
# Основные концепции # Основные концепции
@ -181,9 +188,9 @@ EcsPipelone pipeline = EcsPipeline.New()
//... //...
class SomeSystem : IInject<SomeData>, IEcsRunProcess class SomeSystem : IEcsInject<SomeData>, IEcsRunProcess
{ {
// Для внедрения используется интерфейс IInject<T> и его метод Inject(T obj) // Для внедрения используется интерфейс IEcsInject<T> и его метод Inject(T obj)
SomeData _someData SomeData _someData
public void Inject(SomeData obj) => _someData = obj; public void Inject(SomeData obj) => _someData = obj;
@ -349,10 +356,18 @@ public struct WorldComponent : IEcsWorldComponent<WorldComponent>
} }
} }
``` ```
</details> </details>
> Компоненты можно применять для создания расширений в связке с методами расширений. ### Конфигурация мира
При создании мира, в конструктор можно передать реализацию интерфейса `IEcsWorldConfig`. Реализующие его классы своего рода контейнеры для конфигов. По умолчанию уже реализован стандартный контейнер `EcsWorldConfig` и `Get`/`Set` методы для базовой конфигурации мира.
``` csharp
EcsWorldConfig config = new EcsWorldConfig()
.Set_EntitiesCapacity(512);
_world = new EcsDefaultWorld(config);
```
> Компоненты и конфиги можно применять для создания расширений в связке с методами расширений.
## Пул ## Пул
Является контейнером для компонентов, предоставляет методы для добавления/чтения/редактирования/удаления компонентов на сущности. Есть несколько видов пулов, для разных целей: Является контейнером для компонентов, предоставляет методы для добавления/чтения/редактирования/удаления компонентов на сущности. Есть несколько видов пулов, для разных целей:
* `EcsPool` - универсальный пул, хранит struct-компоненты реализующие интерфейс `IEcsComponent`; * `EcsPool` - универсальный пул, хранит struct-компоненты реализующие интерфейс `IEcsComponent`;
@ -759,6 +774,11 @@ The type or namespace name 'ReadOnlySpan<>' could not be found (are you missing
``` ```
Чтобы починить добавте директиву `ENABLE_DUMMY_SPAN` в `Project Settings/Player/Other Settings/Scripting Define Symbols`. Чтобы починить добавте директиву `ENABLE_DUMMY_SPAN` в `Project Settings/Player/Other Settings/Scripting Define Symbols`.
## Как Выключать/Включать системы?
Напряму - никак. </br>
Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Есть 2 решения:</br>
+ Если измненеия процесса глобальные, то создать новый `EcsPipeline` и в цикле обновления движка запускать соотвествующий пайплайн.
+ Разделить `IEcsRunProcess` на несколько процессов и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска этого интерфейса и получайте раннер через `EcsPipeline.GetRunner<T>()`.
</br> </br>
# Обратная связь # Обратная связь

View File

@ -15,7 +15,7 @@
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). 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] > [!IMPORTANT]
> And a Happy New Year. > 新年快乐!
> [!WARNING] > [!WARNING]
> The project is a work in progress, API may change. > The project is a work in progress, API may change.

View File

@ -8,7 +8,7 @@
"displayName": "DragonECS", "displayName": "DragonECS",
"description": "C# Entity Component System Framework", "description": "C# Entity Component System Framework",
"unity": "2020.3", "unity": "2020.3",
"version": "0.8.5", "version": "0.8.8",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/DCFApixels/DragonECS.git" "url": "https://github.com/DCFApixels/DragonECS.git"