From b05e7c7cf2469dd87b235555f9cc8c4dd26ee424 Mon Sep 17 00:00:00 2001
From: DCFApixels <99481254+DCFApixels@users.noreply.github.com>
Date: Tue, 12 Nov 2024 13:01:37 +0800
Subject: [PATCH] update readme
---
README-RU.md | 43 ++++++++++++++++++++++++++++++++-----------
README.md | 39 +++++++++++++++++++++++++++++++++------
2 files changed, 65 insertions(+), 17 deletions(-)
diff --git a/README-RU.md b/README-RU.md
index d49d803..8102263 100644
--- a/README-RU.md
+++ b/README-RU.md
@@ -11,8 +11,29 @@
# Классические C# Threads для [DragonECS](https://github.com/DCFApixels/DragonECS)
-| Languages: | [Русский](https://github.com/DCFApixels/DragonECS-ClassicThreads/blob/main/README-RU.md) | [English(WIP)](https://github.com/DCFApixels/DragonECS-ClassicThreads) |
-| :--- | :--- | :--- |
+
+
+
Поддержка обработки сущностей в нескольких потоках, на основе классической реализации потоков в C#.
> [!WARNING]
@@ -35,7 +56,7 @@
+ Поддержка NativeAOT
+ Игровые движки с C#: Unity, Godot, MonoGame и т.д.
-Протестированно:
+Протестировано:
+ **Unity:** Минимальная версия 2020.1.0;
## Установка для Unity
@@ -44,8 +65,8 @@
```
https://github.com/DCFApixels/DragonECS-ClassicThreads.git
```
-* ### В виде иходников
-Фреймворк так же может быть добавлен в проект в виде исходников.
+* ### В виде исходников
+Пакет так же может быть добавлен в проект в виде исходников.
@@ -54,21 +75,21 @@ https://github.com/DCFApixels/DragonECS-ClassicThreads.git
EcsThreadHandler _handler;
public void Run(EcsPipeline pipeline)
{
- //Получение Аспекта и сцщностей для итерации.
- var group = _world.Where(out Aspect a);
+ //Получение Аспекта и сущностей для итерации.
+ var ee = _world.Where(out Aspect a);
void Handler(ReadOnlySpan entities)
{
foreach (var e in entities)
{
- //Вычисления в отедльном потоке.
+ //Вычисления в отдельном потоке.
a.poses.Get(e).position += a.velocities.Read(e).value * _time.DeltaTime;
}
}
// Запускает параллельную итерацию по сущностям,
// сущности будут разбита на части с минимальным размером 1000.
- group.IterateParallel(_handler ??= Handler, 1000);
+ ee.IterateParallel(_handler ??= Handler, 1000);
}
```
-> **NOTICE:** Чем меньше минимальный размер части группы при делении, тем больше потоков может быть задействовано, в некоторых ситуациях слишком много потоков может негативно повлиять на производительность.
+> Чем меньше минимальный размер части группы при делении, тем больше потоков может быть задействовано, в некоторых ситуациях слишком много потоков может негативно повлиять на производительность.
-> **NOTICE:** Внутри обработчика запрещено создавать/удалять сущности, запрещено добавлять/удалять компоненты на сущности. Допускается только модификация данных внутри компонентов.
+> Внутри обработчика запрещено создавать/удалять сущности, запрещено добавлять/удалять компоненты на сущности. Допускается только модификация данных внутри компонентов.
diff --git a/README.md b/README.md
index 338fba1..53bdffb 100644
--- a/README.md
+++ b/README.md
@@ -11,8 +11,29 @@
# Classic C# Threads for [DragonECS](https://github.com/DCFApixels/DragonECS)
-| Languages: | [Русский](https://github.com/DCFApixels/DragonECS-ClassicThreads/blob/main/README-RU.md) | [English(WIP)](https://github.com/DCFApixels/DragonECS-ClassicThreads) |
-| :--- | :--- | :--- |
+
+
+
Support for processing entities in multiple threads, based on classic C# threads implementation.
> **NOTICE:** The project is a work in progress, API may change.
@@ -36,12 +57,12 @@ Tested with:
## Unity Installation
* ### Unity Package
-The framework can be installed as a Unity package by adding the Git URL [in the PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) or manually adding it to `Packages/manifest.json`:
+The package can be installed as a Unity package by adding the Git URL [in the PackageManager](https://docs.unity3d.com/2023.2/Documentation/Manual/upm-ui-giturl.html) or manually adding it to `Packages/manifest.json`:
```
https://github.com/DCFApixels/DragonECS-ClassicThreads.git
```
* ### Source Code
-The framework can also be added to the project as source code.
+The package can also be added to the project as source code.
@@ -50,17 +71,23 @@ The framework can also be added to the project as source code.
EcsThreadHandler _handler;
public void Run(EcsPipeline pipeline)
{
+ // Getting the Aspect and entities for iteration.
var group = _world.Where(out Aspect a);
+
void Handler(ReadOnlySpan entities)
{
foreach (var e in entities)
{
+ // Computations in a separate thread.
a.poses.Get(e).position += a.velocities.Read(e).value * _time.DeltaTime;
}
}
+
+ // Starts parallel iteration over entities,
+ // entities will be split into parts with a minimum size of 1000.
group.IterateParallel(_handler ??= Handler, 1000);
}
```
-> **NOTICE:** The smaller the minimum size of the group part when dividing, the more threads can be utilized. In some situations, too many threads can negatively impact performance.
+> The smaller the minimum size of the group part when dividing, the more threads can be utilized. In some situations, too many threads can negatively impact performance.
-> **NOTICE:** Inside the handler, creating/deleting entities, adding/removing components on entities is prohibited. Only modification of data within components is allowed.
+> Inside the handler, creating/deleting entities, adding/removing components on entities is prohibited. Only modification of data within components is allowed.