Интерфейс IAuraAccessor
Описание интерфейса IAuraAccessor в C#
IAuraAccessor
Дескриптор ауры даёт её текущее состояние, переменные, триггеры, оверлеи и списки действий. Получите его через AuraTree в C# Script. Обычному классу передайте IAuraTreeScriptingApi или уже найденный IAuraAccessor через параметр.
Прочитать состояние ауры
Создайте рядом со скриптом ауру TargetAura, затем выполните:
var aura = AuraTree.GetAuraByPath("./TargetAura");
Log.Info($"Состояние: {aura.IsActive}; загружена: {aura.IsLoaded}");
IsActive имеет тип bool?: true — активна, false — неактивна, null — состояние неизвестно. IsLoaded показывает загрузку ауры, это отдельное состояние. Если отсутствие ауры допустимо, используйте FindAuraByPath и проверяйте результат на null; GetAuraByPath требует существующий путь и при его отсутствии бросает ArgumentException.
Интерфейс также объявляет bool IsEnabled, но в реализации AuraAccessor среза 20fd3d4 это свойство не привязано к состоянию ауры. Его false нельзя использовать как доказательство того, что аура выключена. Исходная реализация важна здесь наряду с XML-контрактом.
Выполнить списки действий ауры
Создайте ауру TargetAura и настройте в ней нужные действия. В отдельном C# Script:
var aura = AuraTree.GetAuraByPath("./TargetAura");
await aura.ExecuteAsync(cancellationToken);
Log.Info("Выполнение действий завершено");
Этот вызов последовательно выполняет действия из списков OnEnter, WhileActive, OnExit без необходимости сначала менять активное состояние ауры. WhileActive здесь проходится один раз, а не запускает цикл. Вызов не является присваиванием IsActive. Явно передайте токен скрипта: он проверяется перед каждым действием и передаётся самому действию; отмена уже начатого действия зависит и от его реализации. Значение параметра по умолчанию — default. Синхронный вариант — Execute(cancellationToken); учитывайте ограничения самих действий на поток выполнения.
Состав и версия
EnablingConditions, Triggers, Overlays, OnEnterActions, WhileActiveActions, OnExitActions — наблюдаемые коллекции соответствующих компонентов. Переменные и путь доступны через унаследованные IHasVariables и IHasPath.
Контракт: IAuraAccessor версии EyeAuras 20fd3d4. Модель сущностей объясняется в обзоре аур, поиск — в AuraTree.