Interrupter — это специальная нода для behaviour trees и макросов в EyeAuras, которая помогает "прерывать" долгие действия при наступлении определённых условий.
У Interrupter всегда два дочерних элемента (два "ребёнка"):
Success, Interrupter возвращает Failure, не запуская Action. При Running условия он ждёт следующего такта дерева.true у Condition во время выполнения Action:
Failure.true до завершения Action:
Success, Failure или Running).Проверки должны быть короткими и учитывать отмену. Время реакции включает их
выполнение и задержки планировщика. Действие, игнорирующее токен отмены, нельзя
остановить принудительно; уже выполненные эффекты не откатываются. Допущенная
до остановки мониторинга проверка завершается; обнаруженный после остановки
Success не меняет результат действия.
При прерывании Interrupter сбрасывает принадлежащее ему состояние Action после
завершения активного такта. Это работает и когда Condition становится Success
на следующем такте после Running у Action: итератор скрипта освобождается с
выполнением finally, текущий шаг исполнения и таймеры дочерних нод сбрасываются. После сброса
Condition действие начинается с первого ребёнка. Обычный Running без прерывания
сохраняет состояние. Граф, скрипт, Blackboard и сессия остаются.
Reset обходит структурных детей, включая отключённых; вызываемое дерево SubTree
и состояние сторонних нод требуют отдельного владения. Ошибка освобождения
остаётся ошибкой; остальные дети могут не успеть сброситься.
Interrupter
├── Condition: Мана стала меньше 10%
└── Action: Кастовать заклинание Медитация
Failure.Success, если всё прошло хорошо, или Failure, если действию не удалось выполниться по другой причине).