В Системах Артемиды вы указываете, какие Компоненты требуются Системе, т.е. если в какой-то момент и у Объекта есть хотя бы все необходимые компоненты, считается, что он добавлен в Систему, то есть в следующем кадре Система будет его обрабатывать. Но в Artemis вы также получаете функции обратного вызова, такие как added
или же removed
это говорит о том, что новый объект добавляется в систему.
В EntityX, с другой стороны, я вижу, что системы не требуют специальных компонентов. Сущности запрашиваются на лету, и в систему не добавляется такая концепция, как сущность. Следовательно, я хочу понять, как я могу сделать следующее. Мне нужно в Системе ABC
который обрабатывает все объекты, которые имеют A
, B
а также C
получить какое-то событие, когда была сущность с компонентами A
а также B
и я также добавил компонент C
, Как распознать и справиться с этой ситуацией.
В EntityX нет такого понятия, как Entity принадлежит системе или системам. В каждой системе вы можете просто получить список сущностей, которые имеют определенные компоненты, используя entities_with_components
метод, который каждый раз запрашивает объекты и, следовательно, медленнее, чем если бы для каждой системы существовал текущий список активных объектов.