Update README-RU.md

This commit is contained in:
Mikhail 2023-06-22 15:40:35 +08:00 committed by GitHub
parent a7c6a5856a
commit 844def9cd4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -22,7 +22,7 @@
* [В виде исходников](#В-виде-иходников) * [В виде исходников](#В-виде-иходников)
* [Интеграция](#Интеграция) * [Интеграция](#Интеграция)
* [Инъекция зависимостей](#Инъекция-зависимостей) * [Инъекция зависимостей](#Инъекция-зависимостей)
* [Auto Builder субъектов](#Auto-Builder-субъектов) * [Auto Builder аспектов](#Auto-Builder-аспектов)
* [Пример кода](#Пример-кода) * [Пример кода](#Пример-кода)
* [Не null инъекции](#Не-null-инъекции) * [Не null инъекции](#Не-null-инъекции)
@ -68,18 +68,18 @@ EcsDefaultWorld _world;
//Количество аргументов должно быть равно 1. //Количество аргументов должно быть равно 1.
[EcsInject] void InjectWorld(EcsDefaultWorld world) => _world = world; [EcsInject] void InjectWorld(EcsDefaultWorld world) => _world = world;
``` ```
# Auto Builder субъектов # Auto Builder аспектов
Так же AutoInjections упрощает построение субъектов. Для начала наследуйте субъект не от `EcsSubject`, а от `EcsSubjectDI`, а далее добавьте специальные атрибуты. Так же AutoInjections упрощает построение аспектов. Для начала наследуйте аспект не от `EcsAspect`, а от `EcsAspectAuto`, а далее добавьте специальные атрибуты.
Атрибуты для инициализации полей с пулами: Атрибуты для инициализации полей с пулами:
* `[Inc]` - кеширует пул и добавит тип компонента в включающее ограничение субъекта, аналог метода `Include`; * `[Inc]` - кеширует пул и добавит тип компонента в включающее ограничение аспекта, аналог метода `Include`;
* `[Exc]` - кеширует пул и добавит тип компонента в исключающее ограничение субъекта, аналог метода `Exclude`; * `[Exc]` - кеширует пул и добавит тип компонента в исключающее ограничение аспекта, аналог метода `Exclude`;
* `[Opt]` - только кеширует пул, аналог метода `Optional`; * `[Opt]` - только кеширует пул, аналог метода `Optional`;
Атрибут для комбинирования субъектов: Атрибут для комбинирования аспектов:
* `[Combine(order)]` - кеширует субъект и скомбинирует ограничения субъектов, аналог метода `Combine`, аргумент `order` задает порядок комбинирования, по умлочанию `order = 0`; * `[Combine(order)]` - кеширует аспект и скомбинирует ограничения аспектов, аналог метода `Combine`, аргумент `order` задает порядок комбинирования, по умлочанию `order = 0`;
Дополнительные атрибуты только для задания ограничений субъекта. Их можно применить к самому субъекту, либо к любому полю внутри. Используйте атрибуты: Дополнительные атрибуты только для задания ограничений аспекта. Их можно применить к самому аспекту, либо к любому полю внутри. Используйте атрибуты:
* `[IncImplicit(type)]` - добавит в включающее ограничение указанный в конструкторе тип `type`, аналог метода `Include`; * `[IncImplicit(type)]` - добавит в включающее ограничение указанный в конструкторе тип `type`, аналог метода `Include`;
* `[ExcImplicit(type)]` - добавит в исключающее ограничение указанный в конструкторе тип `type`, аналог метода `Exclude`; * `[ExcImplicit(type)]` - добавит в исключающее ограничение указанный в конструкторе тип `type`, аналог метода `Exclude`;
@ -87,7 +87,7 @@ EcsDefaultWorld _world;
```csharp ```csharp
class VelocitySystemDI : IEcsRunProcess class VelocitySystemDI : IEcsRunProcess
{ {
class Subject : EcsSubjectDI class Aspect : EcsAspectAuto
{ {
[ExcImplicit(typeof(FreezedTag))] [ExcImplicit(typeof(FreezedTag))]
[Inc] public EcsPool<Pose> poses; [Inc] public EcsPool<Pose> poses;
@ -99,9 +99,9 @@ class VelocitySystemDI : IEcsRunProcess
public void Run(EcsPipeline pipeline) public void Run(EcsPipeline pipeline)
{ {
foreach (var e in _world.Where(out Subject s)) foreach (var e in _world.Where(out Aspect a))
{ {
s.poses.Write(e).position += s.velocities.Read(e).value * _time.DeltaTime; s.poses.Write(e).position += a.velocities.Read(e).value * _time.DeltaTime;
} }
} }
} }
@ -112,11 +112,11 @@ class VelocitySystemDI : IEcsRunProcess
```csharp ```csharp
class VelocitySystem : IEcsRunProcess, IEcsInject<EcsDefaultWorld>, IEcsInject<TimeService> class VelocitySystem : IEcsRunProcess, IEcsInject<EcsDefaultWorld>, IEcsInject<TimeService>
{ {
class Subject : EcsSubject class Aspect : EcsAspect
{ {
public EcsPool<Pose> poses; public EcsPool<Pose> poses;
public EcsPool<Velocity> velocities; public EcsPool<Velocity> velocities;
public Subject(Builder b) public Aspect(Builder b)
{ {
b.Exclude<FreezedTag>(); b.Exclude<FreezedTag>();
poses = b.Include<Pose>(); poses = b.Include<Pose>();
@ -132,9 +132,9 @@ class VelocitySystem : IEcsRunProcess, IEcsInject<EcsDefaultWorld>, IEcsInject<T
public void Run(EcsPipeline pipeline) public void Run(EcsPipeline pipeline)
{ {
foreach (var e in _world.Where(out Subject s)) foreach (var e in _world.Where(out Aspect a))
{ {
s.poses.Write(e).position += s.velocities.Read(e).value * _time.DeltaTime; s.poses.Write(e).position += a.velocities.Read(e).value * _time.DeltaTime;
} }
} }
} }