Если были изменения wrapped типов, но потом произошли обратные действия и в итоге все осталось как было в рамках одного кадра, то система событий не реагирует на такие события.
Например, если в рамках одного кадра было добавление и удаление элемента из списка.
### Хранение сырых событий
Все события, которые копятся в течение одного кадра (сырые события), распределяются по своему контейнеру (контейнер - это коллекция, поле, компонент, сущность). Зачем это было сделано. Для того, чтобы при вызове Clear у коллекции, можно было оптимизировано удалять все сырые события.
Например:
collection.add()
collection.Clear() // Здесь мы удаляем сырое событие add
collection.Add()
<br>
### Удаление и добавление уже существовавшего контейнера с данными
Например, когда Entity удаляется и в том же кадре снова добавляется, при условии, что в прошлом кадре он уже существовал, возникает ситуация, что нужно сгенерировать событие на изменение Entity.
Потому что, создав заново Entity, система могла добавить туда новых компонентов, которых в прошлых кадрах не было.
Или же компоненты остались теми же, но поля у некоторых из них были изменены
Или поля остались теми же, но в некоторые коллекции были добавлены новые элементы.
<br>
Пока что я не буду учитывать данный кейс. Посмотрю, на сколько он будет актуален.