Навигация для AI-first сценариев: см. AI Scripting Runtime, AI Auras Overview и AI Aura Entities. Там описаны навигация по дереву, сущности, регистрация и инфраструктура runtime.
IAuraTreeScriptingApi дает доступ к Aura Tree из скриптов. С его помощью можно работать с аурами, папками и деревьями поведения: либо безопасно искать их, либо получать напрямую и обрабатывать ошибки через исключения.
Интерфейс также предоставляет коллекции всех доступных аур, папок и behavior trees, а еще позволяет получать конкретные триггеры и действия из ауры по пути.
public interface IAuraTreeScriptingApi : IScriptingApi
API поддерживает два варианта поиска:
Find...ByPath(...) — возвращает null, если объект не найденGet...ByPath(...) — выбрасывает исключение, если объект не найденВо всех случаях path может быть как абсолютным, так и относительным.
Ссылка на ауру, в которой находится текущий скрипт, или null, если такой ауры нет.
IAuraAccessor Aura { get; }
Ссылка на папку, в которой находится текущий скрипт.
IFolderAccessor Folder { get; }
Содержит все папки в Aura Tree.
IObservableList<IFolderAccessor> Folders { get; }
Содержит все ауры в Aura Tree.
IObservableList<IAuraAccessor> Auras { get; }
Содержит все деревья поведения в Aura Tree.
IObservableList<IBehaviorTreeAccessor> BehaviorTrees { get; }
Ищет ауру по пути. Возвращает null, если ничего не найдено.
IAuraAccessor FindAuraByPath(string path);
Пример:
var aura = AuraTree.FindAuraByPath("MyFolder/Aura1");
if (aura != null)
{
Log.Info("Aura found!");
}
else
{
Log.Info("Aura not found.");
}
Получает ауру по пути. Если ничего не найдено, выбрасывает исключение.
IAuraAccessor GetAuraByPath(string path);
Пример:
try
{
var aura = AuraTree.GetAuraByPath("MyFolder/Aura1");
Log.Info("Aura found!");
}
catch (NotFoundException)
{
Log.Info("Aura not found.");
}
Ищет папку по пути. Возвращает null, если ничего не найдено.
IFolderAccessor FindFolderByPath(string path);
Пример:
var folder = AuraTree.FindFolderByPath("MyProject/Folders/Folder1");
if (folder != null)
{
Log.Info("Folder found!");
}
else
{
Log.Info("Folder not found.");
}
Получает папку по пути. Если ничего не найдено, выбрасывает исключение.
IFolderAccessor GetFolderByPath(string path);
Пример:
try
{
var folder = AuraTree.GetFolderByPath("MyProject/Folders/Folder1");
Log.Info("Folder found!");
}
catch (NotFoundException)
{
Log.Info("Folder not found.");
}
Ищет дерево поведения по пути. Возвращает null, если ничего не найдено.
IBehaviorTreeAccessor FindBehaviorTreeByPath(string path);
Пример:
var behaviorTree = AuraTree.FindBehaviorTreeByPath("MyProject/BehaviorTrees/Tree1");
if (behaviorTree != null)
{
Log.Info("Behavior tree found!");
}
else
{
Log.Info("Behavior tree not found.");
}
Получает дерево поведения по пути. Если ничего не найдено, выбрасывает исключение.
IBehaviorTreeAccessor GetBehaviorTreeByPath(string path);
Пример:
try
{
var behaviorTree = AuraTree.GetBehaviorTreeByPath("MyProject/BehaviorTrees/Tree1");
Log.Info("Behavior tree found!");
}
catch (NotFoundException)
{
Log.Info("Behavior tree not found.");
}
Эти методы позволяют получить триггер или действие нужного типа из ауры по пути.
Получает триггер указанного типа.
Выбрасывает ArgumentException, если:
public TTrigger GetTriggerByPath<TTrigger>(string path) where TTrigger : IAuraTrigger;
Параметр типа:
TTrigger — тип триггера, который нужно получитьПример:
try
{
var trigger = AuraTree.GetTriggerByPath<IImageSearchTrigger>("MyAuraPath");
Log.Info($"Trigger found: {trigger.Name}");
}
catch (ArgumentException ex)
{
Log.Info(ex.Message);
}
Получает действие указанного типа.
Выбрасывает ArgumentException, если:
public TAction GetActionByPath<TAction>(string path) where TAction : IAuraAction;
Параметр типа:
TAction — тип действия, которое нужно получитьПример:
try
{
var action = AuraTree.GetActionByPath<ISendSequenceAction>("MyAuraPath");
Log.Info($"Action found: {action.Name}");
}
catch (ArgumentException ex)
{
Log.Info(ex.Message);
}