Skip to content

feat: AssetManager (нормальный аллокатор для переиспользования слотов в хранилище внутри регистров ассетов) #23

Description

@DvornikovArtem

Сейчас MeshRegistry, TextureRegistry и т.д. работают по неудачной схеме (для наглядности ниже рассмотрим MeshRegistry):

  • при регистрации нового ассета создается новый handleValue
  • handleValue соответствует индексу слота в _meshAssets
  • lookup по хэндлу идет за O(1) напрямую по индексу
  • Unload() только сбрасывает MeshData в nullptr, но не удаляет сам слот и не освобождает индекс
  • новые ассеты всегда добавляются в конец массива

При сценариях с асинхронной подгрузкой/отгрузкой сцен такой подход приводит к накоплению пустых слотов. Поэтому нужно его переписать на подход, когда у нас переиспользуются освобождённые индексы в _meshAssets.

Пока без самой идеи реализации, её допишем сюда позже, как будем приступать к самой реализации.

Metadata

Metadata

Labels

No labels
No labels

Fields

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions