Merge branch 'main' into dev

This commit is contained in:
Mikhail 2024-11-06 20:35:25 +08:00
commit 51452fe90d

View File

@ -449,14 +449,15 @@ poses.Del(entityID);
Пулом выступает любой тип реализующий интерфейс `IEcsPoolImplementation<T>` и имеющий конструктор без параметров. Пулом выступает любой тип реализующий интерфейс `IEcsPoolImplementation<T>` и имеющий конструктор без параметров.
Ключевые моменты при реализации пула: Ключевые моменты при реализации пула:
* Все методы предоставляемые интерфейсом `IEcsPoolImplementation` не предназначены для публичного использования, рекомендуется реализовывать явно. * За примером реализации пула можно обратиться к реализации встроенного пула `EcsPool<T>`.
* Интерфейс `IEcsPoolImplementation` и его члены не предназначены для публичного использования, члены интерфейса рекомендуется реализовывать явно.
* Подставленный в интерфейсе `IEcsPoolImplementation<T>` тип `T` и тип возвращаемый в свойствах `ComponentType` с `ComponentTypeID` должны совпадать. * Подставленный в интерфейсе `IEcsPoolImplementation<T>` тип `T` и тип возвращаемый в свойствах `ComponentType` с `ComponentTypeID` должны совпадать.
* Обязательно регистрировать все изменения пула в экземпляре `EcsWorld.PoolsMediator` передаваемом в методе `OnInit`. * Обязательно регистрировать все изменения пула в экземпляре `EcsWorld.PoolsMediator` передаваемом в методе `OnInit`.
* `EcsWorld.PoolsMediator` предназначен только для использования внутри пула. * `EcsWorld.PoolsMediator` предназначен только для использования внутри пула.
* Дефайн `DISABLE_POOLS_EVENTS` отключает реализуемые методы `AddListener` и `RemoveListener`. * Дефайн `DISABLE_POOLS_EVENTS` отключает реализуемые методы `AddListener` и `RemoveListener`.
* В статическом классе `EcsPoolThrowHelper` определены бросания наиболее распространенных видов исключений. * В статическом классе `EcsPoolThrowHelper` определены бросания наиболее распространенных видов исключений.
* В методе `OnReleaseDelEntityBuffer` происходит очистка удаленных сущностей. * В методе `OnReleaseDelEntityBuffer` происходит очистка удаленных сущностей.
* Рекомендуется определить интерфейс которым обозначаются компоненты для нового пула. На основе этого интерфейса можно реализовать методы расширения вроде `GetPool<T>()` для упрощенного доступа к пулам.
</details> </details>