diff --git a/README-RU.md b/README-RU.md index c6ffaf4..1cdad1c 100644 --- a/README-RU.md +++ b/README-RU.md @@ -15,7 +15,7 @@ Данный [ECS](https://en.wikipedia.org/wiki/Entity_component_system) Фреймворк нацелен на максимальную удобность, модульность, расширяемость и производительность динамического изменения сущностей. Без генерации кода и зависимостей. Вднохновлен [LeoEcs](https://github.com/Leopotam/ecslite). > [!IMPORTANT] -> И с Новым Годом +> 新年快乐! > [!WARNING] > Проект в стадии разработки. API может меняться. @@ -36,6 +36,7 @@ - [Процессы](#процессы) - [Мир](#мир) - [Компоненты мира](#компоненты-мира) + - [Конфигурация мира](#конфигурация-мира) - [Пул](#пул) - [Аспект](#аспект) - [Запросы](#запросы) @@ -53,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`: ``` @@ -61,9 +71,6 @@ https://github.com/DCFApixels/DragonECS.git * ### В виде иходников Фреймворк так же может быть добавлен в проект в виде исходников. -### Версионирование -В DragonECS применяется следующая семантика версионирования: [Открыть](https://gist.github.com/DCFApixels/e53281d4628b19fe5278f3e77a7da9e8#file-dcfapixels_versioning_ru-md) -
# Основные концепции @@ -181,9 +188,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; @@ -349,10 +356,18 @@ public struct WorldComponent : IEcsWorldComponent } } ``` - -> Компоненты можно применять для создания расширений в связке с методами расширений. +### Конфигурация мира +При создании мира, в конструктор можно передать реализацию интерфейса `IEcsWorldConfig`. Реализующие его классы своего рода контейнеры для конфигов. По умолчанию уже реализован стандартный контейнер `EcsWorldConfig` и `Get`/`Set` методы для базовой конфигурации мира. + +``` csharp +EcsWorldConfig config = new EcsWorldConfig() + .Set_EntitiesCapacity(512); +_world = new EcsDefaultWorld(config); +``` + +> Компоненты и конфиги можно применять для создания расширений в связке с методами расширений. ## Пул Является контейнером для компонентов, предоставляет методы для добавления/чтения/редактирования/удаления компонентов на сущности. Есть несколько видов пулов, для разных целей: * `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`. +## Как Выключать/Включать системы? +Напряму - никак.
+Обычно потребность выключить/включить систему появляется когда поменялось общее состояние игры, это может так же значить что нужно переключить сразу группу систем, все это в совокупности можно рассматривать как измннеия процессов. Есть 2 решения:
++ Если измненеия процесса глобальные, то создать новый `EcsPipeline` и в цикле обновления движка запускать соотвествующий пайплайн. ++ Разделить `IEcsRunProcess` на несколько процессов и в цикле обновления движка запускать соотвествующий процесс. Для этого создайте новый интерфейс процесса, раннер для запуска этого интерфейса и получайте раннер через `EcsPipeline.GetRunner()`.
# Обратная связь diff --git a/README.md b/README.md index 0f47083..6866760 100644 --- a/README.md +++ b/README.md @@ -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). > [!IMPORTANT] -> And a Happy New Year. +> 新年快乐! > [!WARNING] > The project is a work in progress, API may change. diff --git a/package.json b/package.json index 911e90e..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.5", + "version": "0.8.8", "repository": { "type": "git", "url": "https://github.com/DCFApixels/DragonECS.git"