Skip to content

Latest commit

 

History

History
26 lines (24 loc) · 4.76 KB

MIGRATION_RU.md

File metadata and controls

26 lines (24 loc) · 4.76 KB

🚀 Migration Guide

Переход с версии 2020.* на 2022.1

Breaking changes

  • Асмдеф и ссылки изменены с XCrew.Morpeh на Scellecs.Morpeh. Неймспейсы те же, что и были.
  • Все глобалы утратили метод NextFrame. Вместо него теперь необходимо использовать метод Publish, который отправляет событие не в этот кадр, а в следующий как ранее делал NextFrame. Отправить событие в текущем кадре теперь невозможно, оно всегда отложенное. Это изменение связано с тем, что на всех проектах использовалась связка Publish + NextFrame, либо только NextFrame.
  • Entity.ID теперь возвращает не int, а структуру типа EntityID в которой содержаться поля id и gen. Это необходимое изменение для работы с Jobs и Burst. Так же добавлен метод World.TryGetEntity(EntityId entityId, out Entity entity), который позволяет проверить наличие сущности без прямой ссылки на нее.
  • Filter.Length удален полностью. Его заменила связка Filter.GetLengthSlow() и Filter.IsEmpty(). Это изменение связано с тем, что обновление кешированного значения длины для каждого фильтра давало большую нагрузку, а учитывая, что большинству фильтров не требовалось проверка на длину, то это была пустая нагрузка. Важный момент, что длина чаще всего использовалась для проверки на пустоту фильтра. Теперь получение длины дорогая операция, но проверка на пустоту такая же быстрая как и раньше. Это позволило сильно ускорить проекты с большим количеством фильтров.
  • Кеши компонентов теперь чистят данные после вызова entity.RemoveComponent() и читать данные по ref из компонента после его удаления теперь нельзя.
  • Итерирование по Filter теперь не гарантирует очередность. Если раньше ваша логика в проекте могла зависеть от того в каком порядке сущности попадают и удаляются из фильтра, то теперь необходимо от этого избавится.
  • Удален ComponentsBag. На его замену пришел полный публичный доступ к кешам компонентов ComponentsCache.

New API

  • Добавлены новые интерфейсы для компонентов IValidatable, IValidatableWithGameObject. Позволяет вызывать стандартный юнитевский метод OnValidate на компонентах, чтобы, например, проинициализровать поля в редакторе. Работает только для компонентов, добавленных через MonoProvider.
  • Добавлено нативное апи для работы с Job и Burst. Подробно о его работе можно прочитать в ридми. Теперь есть методы AsNative() для:
    • Archetype (NativeArchetype)
    • ComponentsCache (NativeCache)
    • FastList (NativeFastList)
    • IntFastList (NativeIntFastList)
    • Filter (NativeFilter)
    • IntHashMap (NativeIntHashMap)
    • World (NativeWorld)
  • Добавлен интерфейс IMorpehLogger и статический класс MLogger. Они позволяют переопределить логирование для Morpeh. Console.WriteLine для окружений кроме Unity по дефолту.
  • Добавлен дефайн MORPEH_PROFILING. Добавление его в Player Settings позволяет профилировать нагрузку от систем без Deep Profile.
  • Теперь Entity.Dispose() стал публичным методом. Это позволяет уничтожить энтити без прямого доступа к миру.
  • Отображение нескольких миров в World Browser