NavigationServer2D
Серверный интерфейс для низкоуровневого доступа к 2D-навигации.
Серверный интерфейс для низкоуровневого доступа к 2D-навигации.
NavigationServer2D - сервер, который обрабатывает навигационные карты, области и агенты. AStar2D или AStarGrid2D.
Карты разделены на регионы, состоящие из многоугольников навигации.
Примечание: Большинство NavigationServer2D Изменения вступают в силу после следующей физики, а не сразу, включая все изменения, внесенные в карты, регионы или агенты навигационными узлами на дереве сцены или с помощью сценариев.
Для того чтобы два региона были соединены друг с другом, они должны иметь аналогичный край. edge_connection_margin на вершину другого края.
Вы можете отправить навигационные слои в регионы с NavigationServer2D.RegionSetNavigationLayers, которые затем могут быть проверены при запрашивании пути с NavigationServer2D.MapGetPath. Это может быть использовано для того, чтобы разрешить или исключить определенные области для некоторых объектов.
Для использования системы предотвращения столкновений вы можете использовать агенты. Вы можете установить целевую скорость агента, а затем серверы излучают звонок с модифицированной скоростью.
Примечание: Система предотвращения столкновения игнорирует регионы. Использование модифицированной скорости напрямую может переместить агент за пределы зоны, в которой происходит столкновение. Это ограничение системы предупреждения столкновения, и любая более сложная ситуация может потребовать использования двигателя физики.
Этот сервер хранит следы любого вызова и выполняет их в фазе синхронизации. Это означает, что вы можете запросить любое изменение карты, используя любую нить, не беспокоясь.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства1
SingletonСвойство
public static NavigationServer2DInstance Singleton { get; }Методы140
AgentCreateRid
public static Rid AgentCreate();Создает агента.
RidAgentGetAvoidanceEnabledbool
public static bool AgentGetAvoidanceEnabled(Rid agent);Верните true, если указанный agent использует избегание (аннулирование).
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
boolAgentGetAvoidanceLayersuint
public static uint AgentGetAvoidanceLayers(Rid agent);Возвращает битовую маску avoidance_layers указанного agent.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
uintAgentGetAvoidanceMaskuint
public static uint AgentGetAvoidanceMask(Rid agent);Возвращает битовую маску avoidance_mask указанного agent.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
uintAgentGetAvoidancePriorityfloat
public static float AgentGetAvoidancePriority(Rid agent);Возвращает avoidance_priority указанного agent.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
floatAgentGetMapRid
public static Rid AgentGetMap(Rid agent);Читает серверную карту агента после обработанных назначений. До синхронизации результат может отличаться от локально назначенной карты Entity.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
agentRID живого серверного агента 2D.
RidRID назначенной карты либо нулевой RID при отсутствии принадлежности.
AgentGetMaxNeighborsint
public static int AgentGetMaxNeighbors(Rid agent);Возвращает максимальное количество других агентов, которые указанный agent учитывает при навигации.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
intAgentGetMaxSpeedfloat
public static float AgentGetMaxSpeed(Rid agent);Возвращает максимальную скорость указанного agent.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
floatAgentGetNeighborDistancefloat
public static float AgentGetNeighborDistance(Rid agent);Возвращает максимальное расстояние до других агентов, которое указанный agent учитывает при навигации.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
floatAgentGetPausedbool
public static bool AgentGetPaused(Rid agent);Возвращает true, если указанный agent приостановлен.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
boolAgentGetPositionVector2
public static Vector2 AgentGetPosition(Rid agent);Возвращает позицию указанного agent в мировом пространстве.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
Vector2AgentGetRadiusfloat
public static float AgentGetRadius(Rid agent);Возвращает радиус указанного agent.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
floatAgentGetTimeHorizonAgentsfloat
public static float AgentGetTimeHorizonAgents(Rid agent);Возвращает минимальное количество времени, в течение которого скорости указанного agent, вычисленные при моделировании, безопасны по отношению к другим агентам.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
floatAgentGetTimeHorizonObstaclesfloat
public static float AgentGetTimeHorizonObstacles(Rid agent);Возвращает минимальное количество времени, в течение которого скорости указанного agent, вычисленные при моделировании, безопасны по отношению к статическим препятствиям для избегания.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
floatAgentGetVelocityVector2
public static Vector2 AgentGetVelocity(Rid agent);Возвращает скорость указанного agent.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
Vector2AgentHasAvoidanceCallbackbool
public static bool AgentHasAvoidanceCallback(Rid agent);Верните true, если указанный agent имеет обратный вызов для избегания.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
boolAgentIsMapChangedbool
public static bool AgentIsMapChanged(Rid agent);Возвращает true, если карта была изменена в предыдущем кадре.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
boolAgentSetAvoidanceCallbackvoid
public static void AgentSetAvoidanceCallback(Rid agent, Callable callback);Устанавливает обратный вызов Callable, который вызывается после каждого шага обработки избегания для agent. Вычисленный safe_velocity будет отправлен с сигналом объекту непосредственно перед физическими расчетами.
Примечание: Созданные обратные вызовы всегда обрабатываются независимо от состояния EntityTree, пока агент находится на навигационной карте и не освобожден. Чтобы отключить отправку обратного вызова от агента, снова используйте NavigationServer2D.AgentSetAvoidanceCallback с пустым Callable.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
callback | Callable | — |
AgentSetAvoidanceEnabledvoid
public static void AgentSetAvoidanceEnabled(Rid agent, bool enabled);Если enabled имеет значение true, указанный agent использует избегание.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
enabled | bool | — |
AgentSetAvoidanceLayersvoid
public static void AgentSetAvoidanceLayers(Rid agent, uint layers);Установите битовую маску агента avoidance_layers.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
layers | uint | — |
AgentSetAvoidanceMaskvoid
public static void AgentSetAvoidanceMask(Rid agent, uint mask);Установите битовую маску avoidance_mask агента.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
mask | uint | — |
AgentSetAvoidancePriorityvoid
public static void AgentSetAvoidancePriority(Rid agent, float priority);Установите avoidance_priority агента с priority от 0,0 (самый низкий приоритет) до 1,0 (самый высокий приоритет).
Указанный agent не корректирует скорость для других агентов, которые соответствуют avoidance_mask, но имеют более низкий avoidance_priority. Это, в свою очередь, заставляет других агентов с более низким приоритетом корректировать свои скорости еще больше, чтобы избежать столкновения с этим агентом.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
priority | float | — |
AgentSetMapvoid
public static void AgentSetMap(Rid agent, Rid map);Ставит смену карты серверного агента в очередь. Для Entity NavigationAgent2D обычно используйте её SetNavigationMap, чтобы согласовать и запросы пути, и серверную принадлежность.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
map | Rid | — |
agentRID живого серверного агента, а не карты, региона или Entity ID.
mapRID карты 2D. Разные карты не образуют одну общую симуляцию избегания.
AgentSetMaxNeighborsvoid
public static void AgentSetMaxNeighbors(Rid agent, int count);Устанавливает максимальное количество других агентов, которые агент учитывает при навигации. Чем больше это число, тем дольше время выполнения симуляции. Если число слишком мало, симуляция не будет безопасной.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
count | int | — |
AgentSetMaxSpeedvoid
public static void AgentSetMaxSpeed(Rid agent, float maxSpeed);Устанавливает максимальную скорость агента. Должна быть положительной.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
maxSpeed | float | — |
AgentSetNeighborDistancevoid
public static void AgentSetNeighborDistance(Rid agent, float distance);Устанавливает максимальное расстояние до других агентов, которое этот агент учитывает при навигации. Чем больше это число, тем дольше время выполнения симуляции. Если число слишком мало, симуляция не будет безопасной.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
distance | float | — |
AgentSetPausedvoid
public static void AgentSetPaused(Rid agent, bool paused);Если paused равно true, указанный agent не будет обработан. Например, он не будет рассчитывать скорости уклонения или получать обратные вызовы уклонения.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
paused | bool | — |
AgentSetPositionvoid
public static void AgentSetPosition(Rid agent, Vector2 position);Устанавливает положение агента в мировом пространстве.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
position | Vector2 | — |
AgentSetRadiusvoid
public static void AgentSetRadius(Rid agent, float radius);Устанавливает радиус действия агента.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
radius | float | — |
AgentSetTimeHorizonAgentsvoid
public static void AgentSetTimeHorizonAgents(Rid agent, float timeHorizon);Минимальное количество времени, в течение которого скорость агента, рассчитанная с помощью моделирования, безопасна по отношению к другим агентам. Чем больше это число, тем скорее этот агент ответит на присутствие других агентов, но чем меньше свобода выбора агентом своих скоростей. Слишком высокое значение значительно замедляет движение агента. Должно быть положительным.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
timeHorizon | float | — |
AgentSetTimeHorizonObstaclesvoid
public static void AgentSetTimeHorizonObstacles(Rid agent, float timeHorizon);Минимальное количество времени, в течение которого скорость агента, рассчитанная с помощью моделирования, безопасна с точки зрения статических препятствий, препятствующих избежанию. Чем больше это число, тем раньше этот агент будет реагировать на наличие статических препятствий, но чем меньше свобода этого агента при выборе скорости. Слишком высокая величина значительно замедляет движение агента.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
timeHorizon | float | — |
AgentSetVelocityvoid
public static void AgentSetVelocity(Rid agent, Vector2 velocity);Комплекты velocity как новая требуемая скорость для указанного agentВ случае телепортации агента на новое место, расположенное далеко от него, его следует использовать. NavigationServer2D.AgentSetVelocityForced вместо этого перезагрузить состояние внутренней скорости.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
velocity | Vector2 | — |
AgentSetVelocityForcedvoid
public static void AgentSetVelocityForced(Rid agent, Vector2 velocity);Заменяет внутреннюю скорость в моделировании избегания столкновений на velocity для указанного agent. Когда агент телепортируется в новое положение далеко, эта функция должна использоваться в том же кадре. При частом вызове эта функция может привести к застреванию агентов.
| Имя | Тип | По умолчанию |
|---|---|---|
agent | Rid | — |
velocity | Vector2 | — |
BakeFromSourceGeometryDatavoid
public static void BakeFromSourceGeometryData(NavigationPolygon navigationPolygon, NavigationMeshSourceGeometryData2D sourceGeometryData, Callable callback = default);Синхронно запекает переданные исходные данные в ресурс навигации. Не разбирает автоматически весь уровень и не назначает результат региону. Проверьте количество полигонов, затем назначьте ресурс и дождитесь публикации карты.
| Имя | Тип | По умолчанию |
|---|---|---|
navigationPolygon | NavigationPolygon | — |
sourceGeometryData | NavigationMeshSourceGeometryData2D | — |
callback | Callable | default |
navigationPolygonРесурс результата с настроенными параметрами запекания, включая радиус и разрешение. Его содержимое изменяется вызовом.
sourceGeometryDataПодготовленные исходные данные соответствующей размерности. Пустые или неподходящие поверхности могут дать результат без полигонов.
BakeFromSourceGeometryDataAsyncvoid
public static void BakeFromSourceGeometryDataAsync(NavigationPolygon navigationPolygon, NavigationMeshSourceGeometryData2D sourceGeometryData, Callable callback = default);Запекает предоставленный navigation_polygon с данными из предоставленного source_geometry_data как асинхронную задачу, работающую в фоновом потоке. После завершения процесса будет вызван необязательный callback.
| Имя | Тип | По умолчанию |
|---|---|---|
navigationPolygon | NavigationPolygon | — |
sourceGeometryData | NavigationMeshSourceGeometryData2D | — |
callback | Callable | default |
FreeRidvoid
public static void FreeRid(Rid rid);Уничтожает указанный RID.
| Имя | Тип | По умолчанию |
|---|---|---|
rid | Rid | — |
GetDebugEnabledbool
public static bool GetDebugEnabled();Читает флаг отладки сервера. Включённый флаг не доказывает наличие видимой геометрии: штатное отображение создают соответствующие Entity с учётом дополнительных настроек.
boolТекущее значение флага; это не проверка отображения или правильности пути.
GetMapsReckfell.Collections.Array<Rid>
GetProcessInfoint
public static int GetProcessInfo(NavigationServer2D.ProcessInfo processInfo);Читает счётчик 2D-сервера. Сводка собирается по активным картам после обработки сервером, а не по всем выделенным RID. Отключённый регион остаётся в RegionCount, пока назначен активной карте. Это не измерение времени поиска.
| Имя | Тип | По умолчанию |
|---|---|---|
processInfo | NavigationServer2D.ProcessInfo | — |
processInfoВыбор счётчика: ActiveMaps, RegionCount, PolygonCount или другой элемент ProcessInfo.
intЦелое значение счётчика. Последние изменения карты могут ещё ожидать обработки.
IsBakingNavigationPolygonbool
public static bool IsBakingNavigationPolygon(NavigationPolygon navigationPolygon);Возвращает true, когда предоставленный навигационный полигон запекается в фоновом потоке.
| Имя | Тип | По умолчанию |
|---|---|---|
navigationPolygon | NavigationPolygon | — |
boolLinkCreateRid
public static Rid LinkCreate();Создаёт серверную навигационную связь и возвращает её RID. Настройте карту, глобальные концы и слои; связь участвует в поиске пути, но не перемещает персонажа. Освободите принадлежащий вам RID через FreeRid.
RidRID новой связи. Владение требует последующего FreeRid; Entity NavigationLink2D управляет своим собственным RID отдельно.
LinkGetEnabledbool
public static bool LinkGetEnabled(Rid link);Возвращает true, если указанная link включена.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
boolLinkGetEndPositionVector2
public static Vector2 LinkGetEndPosition(Rid link);Возвращает конечную позицию link.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
Vector2LinkGetEnterCostfloat
public static float LinkGetEnterCost(Rid link);Возвращает входную стоимость этого link.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
floatLinkGetIterationIduint
public static uint LinkGetIterationId(Rid link);Возвращает текущий идентификатор итерации навигационной ссылки. Каждый раз, когда навигационная ссылка изменяется и синхронизируется, идентификатор итерации увеличивается. Идентификатор итерации 0 означает, что навигационная ссылка никогда не синхронизировалась.
Примечание: Идентификатор итерации вернется к 1 после достижения предела диапазона.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
uintLinkGetMapRid
public static Rid LinkGetMap(Rid link);Возвращает навигационную карту Rid, которой в данный момент назначена запрошенная link.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
RidLinkGetNavigationLayersuint
public static uint LinkGetNavigationLayers(Rid link);Возвращает слои навигации для этого link.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
uintLinkGetOwnerIdulong
public static ulong LinkGetOwnerId(Rid link);Возвращает ObjectID объекта, который управляет этой ссылкой.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
ulongLinkGetStartPositionVector2
public static Vector2 LinkGetStartPosition(Rid link);Возвращает начальную позицию этого link.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
Vector2LinkGetTravelCostfloat
public static float LinkGetTravelCost(Rid link);Возвращает стоимость поездки по этому link.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
floatLinkIsBidirectionalbool
public static bool LinkIsBidirectional(Rid link);Возвращает, можно ли перемещаться по link в обоих направлениях.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
boolLinkSetBidirectionalvoid
public static void LinkSetBidirectional(Rid link, bool bidirectional);Разрешает или запрещает обратное прохождение связи. При false остаётся направление от стартового конца к конечному. Изменение требует публикации новой версии карты.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
bidirectional | bool | — |
bidirectionaltrue для обоих направлений, false только для start → end.
LinkSetEnabledvoid
public static void LinkSetEnabled(Rid link, bool enabled);Включает участие связи в навигации или отключает его после синхронизации. Не останавливает уже начатую анимацию или движение персонажа: этим управляет игра.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
enabled | bool | — |
enabledtrue для включения связи, false для исключения её перехода из новых запросов после обновления карты.
LinkSetEndPositionvoid
public static void LinkSetEndPosition(Rid link, Vector2 position);Задаёт глобальный конечный конец серверной связи. Перенос за радиус подключения разрывает проверенный маршрут после синхронизации. Сам не переносит игровое тело.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
position | Vector2 | — |
positionГлобальная позиция конца в координатах карты.
LinkSetEnterCostvoid
public static void LinkSetEnterCost(Rid link, float enterCost);Устанавливает enter_cost для этого link.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
enterCost | float | — |
LinkSetMapvoid
public static void LinkSetMap(Rid link, Rid map);Назначает связь навигационной карте. Оба конца должны подключаться к подходящим полигонам этой карты. Изменение становится доступно запросам после публикации обновления сервера.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
map | Rid | — |
linkRID живой связи, созданной этим сервером.
mapRID карты с нужными навигационными регионами; не путайте с RID региона.
LinkSetNavigationLayersvoid
public static void LinkSetNavigationLayers(Rid link, uint navigationLayers);Задаёт маску слоёв самой связи. Запрос должен допускать и связь, и её регионы. Для регионов на слое 1 и связи на слое 2 проверена маска запроса 3; маска 1 не допускает связь.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
navigationLayers | uint | — |
navigationLayersБеззнаковая 32-битная маска; номер слоя N задаётся битом 1u << (N - 1), а не числом N.
LinkSetOwnerIdvoid
public static void LinkSetOwnerId(Rid link, ulong ownerId);Записывает ID объекта-владельца для метаданных пути. ID и RID связи различаются. Назначение ID не создаёт объект и не передаёт серверу управление его жизненным циклом.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
ownerId | ulong | — |
ownerIdНапример, GetInstanceId() живого объекта-контроллера перехода. 0 означает отсутствие назначенного объекта-владельца.
LinkSetStartPositionvoid
public static void LinkSetStartPosition(Rid link, Vector2 position);Задаёт глобальный стартовый конец серверной связи. При одностороннем переходе путь идёт от этого конца к конечному. Подключение требует подходящего полигона в радиусе карты.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
position | Vector2 | — |
positionГлобальная позиция в координатах карты. В отличие от NavigationLink2D.StartPosition это не локальная позиция Entity.
LinkSetTravelCostvoid
public static void LinkSetTravelCost(Rid link, float travelCost);Устанавливает travel_cost для этого link.
| Имя | Тип | По умолчанию |
|---|---|---|
link | Rid | — |
travelCost | float | — |
MapCreateRid
public static Rid MapCreate();Создаёт отдельную навигационную карту без геометрии. Владелец должен включить обработку, добавить регионы, дождаться публикации и позднее освободить карту через FreeRid.
RidRID новой карты, а не региона или Entity. Не подменяйте им объект другой размерности.
MapForceUpdatevoid · Устарело
public static void MapForceUpdate(Rid map);Данная функция обеспечивает незамедлительную синхронизацию конкретного судоходства map RidПо умолчанию навигационные карты синхронизируются только в конце каждой физики. Эта функция может быть использована для немедленной (перерасчета) обработки всех навигационных смычек и региональных соединений навигационной карты, что позволяет немедленно и в одном и том же раме найти навигационную траекторию изменения карты (в случае необходимости несколько раз).
Из-за технических ограничений будет спущена очередь команды WailwayServer. Это означает, что будут выполнены все уже поставленные команды обновления для этой физики, даже те, которые предназначены для других карт, регионов и агентов, не входящих в указанную карту. Дорогие расчеты навигационных ячеек и региональных соединений карты будут произведены только для указанной карты. Другие карты получат нормальную синхронизацию в конце физики. Если указанная карта получит изменения после принудительного обновления, то она будет обновляться снова, а остальные карты получат их обновление.
Обработка и отправка документов о расторжении сделок safe_velocity Эта функция не затрагивает сигналов, и она продолжает действовать в отношении всех карт и агентов в конце физики.
Примечание: Эта функция должна использоваться только пользователями, которые действительно знают, что они делают и имеют для этого веские основания. Для немедленного обновления навигационной карты требуется заблокировать Навигационный Сервер и смыть всю командную очередь Навигационного Сервера. Это не только может серьезно повлиять на результативность игры, но также может ввести ошибки, если их использовать ненадлежащим образом без большой прозорливости.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
MapGetAgentsReckfell.Collections.Array<Rid>
public static Reckfell.Collections.Array<Rid> MapGetAgents(Rid map);Возвращает все навигационные агенты Rids которые в настоящее время отнесены к требуемому судоходству. map.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
Reckfell.Collections.Array<Rid>MapGetCellSizefloat
public static float MapGetCellSize(Rid map);Возвращает размер ячейки карты, используемый для растеризации вершин навигационной сетки.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
floatMapGetClosestPointVector2
public static Vector2 MapGetClosestPoint(Rid map, Vector2 toPoint);Возвращает точку поверхности навигационной сетки, ближайшую к указанному to_point на навигационной map.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
toPoint | Vector2 | — |
Vector2MapGetClosestPointOwnerRid
public static Rid MapGetClosestPointOwner(Rid map, Vector2 toPoint);Возвращает область владельца RID для точки навигационной стыковой поверхности, наиболее близкой к предусмотренной to_point по вопросам судоходства map.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
toPoint | Vector2 | — |
RidMapGetEdgeConnectionMarginfloat
public static float MapGetEdgeConnectionMargin(Rid map);Возвращает границу соединения ребер карты. Грань соединения ребер — это расстояние, используемое для соединения двух регионов.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
floatMapGetIterationIduint
public static uint MapGetIterationId(Rid map);Возвращает текущий идентификатор итерации навигационной карты. Каждый раз, когда навигационная карта изменяется и синхронизируется, идентификатор итерации увеличивается. Идентификатор итерации 0 означает, что навигационная карта никогда не синхронизировалась. Примечание: Идентификатор итерации вернется к 1 после достижения предела диапазона.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
uintMapGetLinkConnectionRadiusfloat
public static float MapGetLinkConnectionRadius(Rid map);Возвращает радиус соединения ссылок карты. Это расстояние является максимальным диапазоном, в котором любая ссылка будет искать полигоны навигационной сетки для соединения.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
floatMapGetLinksReckfell.Collections.Array<Rid>
public static Reckfell.Collections.Array<Rid> MapGetLinks(Rid map);Возвращает все навигационные ссылки Rid-ов, которые в данный момент назначены запрошенной навигационной карте map.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
Reckfell.Collections.Array<Rid>MapGetMergeRasterizerCellScalefloat
public static float MapGetMergeRasterizerCellScale(Rid map);Возвращает внутренний масштаб клеточной шкалы рестеризатора.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
floatMapGetObstaclesReckfell.Collections.Array<Rid>
public static Reckfell.Collections.Array<Rid> MapGetObstacles(Rid map);Возвращает все навигационные препятствия Rid-ов, которые в данный момент назначены запрошенной навигационной карте map.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
Reckfell.Collections.Array<Rid>MapGetPathVector2[]
public static Vector2[] MapGetPath(Rid map, Vector2 origin, Vector2 destination, bool optimize, uint navigationLayers = 1);Выполняет прямой запрос точек пути по опубликованной карте. Непустой результат может быть частичным или иметь спроецированные старт/цель; проверяйте оба конца. Массив сам не перемещает персонажа и не обновляется при изменении карты.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
origin | Vector2 | — |
destination | Vector2 | — |
optimize | bool | — |
navigationLayers | uint | 1 |
mapRID живой навигационной карты этой размерности с опубликованной геометрией.
originНачальная позиция в глобальных координатах карты; первая точка результата может быть спроецирована на доступную поверхность.
destinationЦелевая позиция в глобальных координатах карты; последняя точка может не совпасть с ней при недостижимости.
optimizetrue использует Corridorfunnel внутри найденного коридора; false — Edgecentered. Не отключает A* и не гарантирует меньшую стоимость вычисления.
navigationLayersМаска допустимых слоёв регионов и связей; по умолчанию 1. Слой N — бит 1u << (N - 1).
Vector2[]Массив Vector2[] с точками маршрута; пуст при отсутствии подходящего пути. Наличие точек не гарантирует достижение исходной цели или физически безопасное движение.
MapGetRandomPointVector2
public static Vector2 MapGetRandomPoint(Rid map, uint navigationLayers, bool uniformly);Возвращает случайную позицию, выбранную из всех полигонов области карты с соответствующими navigation_layers.
Если uniformly равен true, все области карты, полигоны и грани взвешиваются по площади их поверхности (медленнее).
Если uniformly равен false, выбираются только случайная область и случайный полигон (быстрее).
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
navigationLayers | uint | — |
uniformly | bool | — |
Vector2MapGetRegionsReckfell.Collections.Array<Rid>
public static Reckfell.Collections.Array<Rid> MapGetRegions(Rid map);Возвращает зарегистрированные регионы карты. После переноса региона списки старой и новой карты обновляются при обработке команды. Наличие региона не доказывает готовность его навигационных полигонов.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
mapRID карты, список регионов которой нужен.
Reckfell.Collections.Array<Rid>Массив RID регионов, а не ID Entity. Может быть пустым.
MapGetUseAsyncIterationsbool
public static bool MapGetUseAsyncIterations(Rid map);Возвращает true, если синхронизация map использует асинхронный процесс, работающий в фоновом потоке.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
boolMapGetUseEdgeConnectionsbool
public static bool MapGetUseEdgeConnections(Rid map);Возвращает информацию о том, позволяет ли навигационная map областям навигации использовать граничные соединения для соединения с другими областями навигации в непосредственной близости от границы граничного соединения навигационной карты.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
boolMapIsActivebool
public static bool MapIsActive(Rid map);Проверяет участие карты в обработке сервером, а не наличие геометрии или запрет запросов. Изменение MapSetActive проходит через очередь.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
mapRID живой карты 2D.
booltrue, если карта включена в обработку; false не означает, что опубликованный путь больше нельзя запросить.
MapSetActivevoid
public static void MapSetActive(Rid map, bool active);Включает или отключает участие карты в обработке сервером. false не запрещает прямые запросы к уже опубликованной навигации: это проверено в установленной сборке. Для паузы персонажа управляйте его игровой логикой.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
active | bool | — |
mapRID карты соответствующего NavigationServer.
activetrue добавляет карту в обработку; false убирает из неё. Это не флаг разрешения поиска пути.
MapSetCellSizevoid
public static void MapSetCellSize(Rid map, float cellSize);Устанавливает размер ячейки карты, используемый для растеризации вершин навигационной сетки. Должен совпадать с размером ячейки используемых навигационных сеток.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
cellSize | float | — |
MapSetEdgeConnectionMarginvoid
public static void MapSetEdgeConnectionMargin(Rid map, float margin);Настраивает расстояние для дополнительных соединений близких рёбер. Не управляет всеми случаями слияния через сетку карты и не гарантирует соединение произвольных рёбер. После изменения дождитесь обновления и проверьте новый путь.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
margin | float | — |
mapRID карты, соединения которой настраиваются.
marginДопуск в единицах карты. Чрезмерное значение может соединить нежелательные разрывы; это не разрешение физическому персонажу перепрыгнуть зазор.
MapSetLinkConnectionRadiusvoid
public static void MapSetLinkConnectionRadius(Rid map, float radius);Задаёт радиус поиска полигона около каждого конца навигационной связи на карте. Это не максимальная длина связи между концами. Без подходящего полигона рядом с одним концом полного перехода нет.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
radius | float | — |
radiusРадиус в единицах координат карты; учитывайте его при размещении глобальных концов связи.
MapSetMergeRasterizerCellScalevoid
public static void MapSetMergeRasterizerCellScale(Rid map, float scale);Установите внутренний масштаб ячеек растеризатора слияния карты, используемый для управления чувствительностью слияния.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
scale | float | — |
MapSetUseAsyncIterationsvoid
public static void MapSetUseAsyncIterations(Rid map, bool enabled);Если enabled имеет значение true, то синхронизация map использует асинхронный процесс, который выполняется в фоновом потоке.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
enabled | bool | — |
MapSetUseEdgeConnectionsvoid
public static void MapSetUseEdgeConnections(Rid map, bool enabled);Включает или отключает дополнительные соединения рёбер карты. Отключение не гарантирует разрыва рёбер, уже объединённых через сетку: такой случай проверен на зазоре меньше ячейки.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
enabled | bool | — |
enabledtrue разрешает дополнительные соединения, false отключает этот механизм после обновления карты.
ObstacleCreateRid
public static Rid ObstacleCreate();Создает новое навигационное препятствие (obstacle).
RidObstacleGetAvoidanceEnabledbool
public static bool ObstacleGetAvoidanceEnabled(Rid obstacle);Возвращает true, если для предоставленного obstacle включено уклонение.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
boolObstacleGetAvoidanceLayersuint
public static uint ObstacleGetAvoidanceLayers(Rid obstacle);Возвращает битовую маску avoidance_layers указанного obstacle.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
uintObstacleGetMapRid
public static Rid ObstacleGetMap(Rid obstacle);Возвращает навигационную карту Rid, которой в данный момент назначен запрошенный obstacle.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
RidObstacleGetPausedbool
public static bool ObstacleGetPaused(Rid obstacle);Возвращает true, если указанное obstacle приостановлено.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
boolObstacleGetPositionVector2
public static Vector2 ObstacleGetPosition(Rid obstacle);Возвращает положение указанного obstacle в мировом пространстве.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
Vector2ObstacleGetRadiusfloat
public static float ObstacleGetRadius(Rid obstacle);Возвращает радиус указанного динамического obstacle.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
floatObstacleGetVelocityVector2
public static Vector2 ObstacleGetVelocity(Rid obstacle);Возвращает скорость указанного динамического obstacle.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
Vector2ObstacleGetVerticesVector2[]
public static Vector2[] ObstacleGetVertices(Rid obstacle);Возвращает вершины контура для указанного obstacle.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
Vector2[]ObstacleSetAvoidanceEnabledvoid
public static void ObstacleSetAvoidanceEnabled(Rid obstacle, bool enabled);Если enabled имеет значение true, предоставленный obstacle влияет на избегание с помощью агентов.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
enabled | bool | — |
ObstacleSetAvoidanceLayersvoid
public static void ObstacleSetAvoidanceLayers(Rid obstacle, uint layers);Устанавливает данные obstacleСлои избегания layers.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
layers | uint | — |
ObstacleSetMapvoid
public static void ObstacleSetMap(Rid obstacle, Rid map);Устанавливает навигационную карту Rid для препятствия.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
map | Rid | — |
ObstacleSetPausedvoid
public static void ObstacleSetPaused(Rid obstacle, bool paused);Если paused равно true, то указанный obstacle не будет обработан. Например, он больше не будет влиять на скорость уклонения.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
paused | bool | — |
ObstacleSetPositionvoid
public static void ObstacleSetPosition(Rid obstacle, Vector2 position);Устанавливает положение препятствия в мировом пространстве.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
position | Vector2 | — |
ObstacleSetRadiusvoid
public static void ObstacleSetRadius(Rid obstacle, float radius);Устанавливает радиус динамического препятствия.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
radius | float | — |
ObstacleSetVelocityvoid
public static void ObstacleSetVelocity(Rid obstacle, Vector2 velocity);Устанавливает velocity для динамического obstacle. Позволяет другим агентам лучше предсказывать движение динамического препятствия. Работает только в сочетании с радиусом препятствия.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
velocity | Vector2 | — |
ObstacleSetVertices2 перегрузки
public static void ObstacleSetVertices(Rid obstacle, Vector2[] vertices);Устанавливает вершины контура для препятствия. Если вершины закручены по часовой стрелке, агенты будут вталкиваться препятствием, в противном случае они будут выталкиваться.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
vertices | Vector2[] | — |
public static void ObstacleSetVertices(Rid obstacle, ReadOnlySpan<Vector2> vertices);Устанавливает вершины контура для препятствия. Если вершины закручены по часовой стрелке, агенты будут вталкиваться препятствием, в противном случае они будут выталкиваться.
| Имя | Тип | По умолчанию |
|---|---|---|
obstacle | Rid | — |
vertices | ReadOnlySpan<Vector2> | — |
ParseSourceGeometryDatavoid
public static void ParseSourceGeometryData(NavigationPolygon navigationPolygon, NavigationMeshSourceGeometryData2D sourceGeometryData, Entity rootEntity, Callable callback = default);Протестую. EntityTree для геометрии источника в зависимости от свойств navigation_polygon:: Обновление представленной информации source_geometry_data Затем этот ресурс может быть использован для испечки навигационной сетки с помощью NavigationServer2D.BakeFromSourceGeometryData. После завершения процесса факультативная callback будет позвонили.
Примечание: Эта функция должна функционировать по основному направлению или с отсрочкой вызова в качестве EntityTree - Это не безопасно для нити.
Performance: Удобно читать массивы данных из Mesh Данные должны быть получены от ГПС, что затормозило бы процесс пересмотра. RenderingServer Для целей эффективности предпочтение отдается использованию, например, формы столкновения или созданию сетей данных полностью в коде.
| Имя | Тип | По умолчанию |
|---|---|---|
navigationPolygon | NavigationPolygon | — |
sourceGeometryData | NavigationMeshSourceGeometryData2D | — |
rootEntity | Entity | — |
callback | Callable | default |
QueryPath2 перегрузки
public static void QueryPath(NavigationPathQueryParameters2D parameters, NavigationPathQueryResult2D result);Выполняет запрос по параметрам и заменяет данные результата. Результат не отслеживает цель автоматически: для новой задачи вызовите метод снова. Карта должна существовать и быть синхронизирована; непустой путь может быть частичным.
| Имя | Тип | По умолчанию |
|---|---|---|
parameters | NavigationPathQueryParameters2D | — |
result | NavigationPathQueryResult2D | — |
parametersПараметры живой карты, глобальных координат, маски и фильтров. Их можно повторно использовать; ненужные фильтры и ограничения очищайте явно.
resultОбъект, в который записываются точки, длина и выбранные метаданные этого запроса. Для независимых одновременных запросов используйте отдельные результаты.
public static void QueryPath(NavigationPathQueryParameters2D parameters, NavigationPathQueryResult2D result, Callable callback = default);Запрашивает путь в заданной навигационной карте. Начальная и конечная позиция, а также другие параметры определяются через NavigationPathQueryParameters2D. Обновляет предоставленный объект результата NavigationPathQueryResult2D путем среди других результатов, запрошенных запросом. После завершения процесса будет вызван необязательный callback.
| Имя | Тип | По умолчанию |
|---|---|---|
parameters | NavigationPathQueryParameters2D | — |
result | NavigationPathQueryResult2D | — |
callback | Callable | default |
RegionCreateRid
public static Rid RegionCreate();Создает новый регион.
RidRegionGetBoundsRect2
public static Rect2 RegionGetBounds(Rid region);Читает границы обработанной навигационной геометрии региона в пространстве карты. После изменения трансформа дождитесь обновления. Это границы навигации, а не графического меша или физической формы.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
Rect2Прямоугольник границ навигационных вершин региона после применённого трансформа.
RegionGetClosestPointVector2
public static Vector2 RegionGetClosestPoint(Rid region, Vector2 toPoint);Возвращает точку поверхности навигационной сетки, ближайшую к указанному to_point в навигационной region.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
toPoint | Vector2 | — |
Vector2RegionGetConnectionPathwayEndVector2
public static Vector2 RegionGetConnectionPathwayEnd(Rid region, int connection);Возвращает конечную точку соединения. connection — это индекс между 0 и возвращаемым значением NavigationServer2D.RegionGetConnectionsCount.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
connection | int | — |
Vector2RegionGetConnectionPathwayStartVector2
public static Vector2 RegionGetConnectionPathwayStart(Rid region, int connection);Возвращает начальную точку соединения. connection — это индекс между 0 и возвращаемым значением NavigationServer2D.RegionGetConnectionsCount.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
connection | int | — |
Vector2RegionGetConnectionsCountint
public static int RegionGetConnectionsCount(Rid region);Возвращает число дополнительных соединений региона, подготовленных картой. Используйте для диагностики margin-соединений, но не как универсальный тест достижимости: слияние через сетку и фильтры запроса требуют отдельной проверки.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
intЧисло подготовленных дополнительных соединений; готовность маршрута проверяйте новым запросом пути.
RegionGetEnabledbool
public static bool RegionGetEnabled(Rid region);Возвращает true, если указанный region включен.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
boolRegionGetEnterCostfloat
public static float RegionGetEnterCost(Rid region);Возвращает стоимость входа для этого region.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
floatRegionGetIterationIduint
public static uint RegionGetIterationId(Rid region);Возвращает текущий идентификатор итерации региона навигации. Каждый раз, когда регион навигации изменяется и синхронизируется, идентификатор итерации увеличивается. Идентификатор итерации 0 означает, что регион навигации никогда не синхронизировался.
Примечание: Идентификатор итерации вернется к 1 после достижения предела диапазона.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
uintRegionGetMapRid
public static Rid RegionGetMap(Rid region);Читает текущую серверную принадлежность региона. Вызов сразу после RegionSetMap может ещё возвращать прежнее значение до обработки очереди.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
regionRID живого региона 2D.
RidRID назначенной карты либо нулевой RID для отсоединённого региона.
RegionGetNavigationLayersuint
public static uint RegionGetNavigationLayers(Rid region);Возвращает навигационные слои региона.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
uintRegionGetOwnerIdulong
public static ulong RegionGetOwnerId(Rid region);Возвращает ObjectID объекта, который управляет этим регионом.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
ulongRegionGetRandomPointVector2
public static Vector2 RegionGetRandomPoint(Rid region, uint navigationLayers, bool uniformly);Возвращает случайную позицию, выбранную из всех полигонов региона с соответствующим navigation_layers.
Если uniformly равен true, все полигоны региона и грани взвешиваются по площади их поверхности (медленнее).
Если uniformly равен false, выбираются только случайный полигон и грань (быстрее).
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
navigationLayers | uint | — |
uniformly | bool | — |
Vector2RegionGetTransformTransform2D
public static Transform2D RegionGetTransform(Rid region);Возвращает глобальное преобразование этого region.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
Transform2DRegionGetTravelCostfloat
public static float RegionGetTravelCost(Rid region);Возвращает стоимость поездки в этом region.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
floatRegionGetUseAsyncIterationsbool
public static bool RegionGetUseAsyncIterations(Rid region);Возвращает true, если region использует асинхронный процесс синхронизации, работающий в фоновом потоке.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
boolRegionGetUseEdgeConnectionsbool
public static bool RegionGetUseEdgeConnections(Rid region);Возвращает значение, указывающее, настроена ли навигационная область region на использование краевых соединений для соединения с другими навигационными областями в непосредственной близости от границы краевого соединения навигационной карты.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
boolRegionOwnsPointbool
public static bool RegionOwnsPoint(Rid region, Vector2 point);Возвращает true, если предоставленная point в мировом пространстве в настоящее время принадлежит предоставленной навигации region. Владение в этом контексте означает, что одна из граней полигонов сетки навигации региона имеет возможное положение на самом близком расстоянии к этой точке по сравнению со всеми другими сетками навигации из других регионов навигации, которые также зарегистрированы на навигационной карте предоставленного региона.
Если несколько сеток навигации имеют положения на равном расстоянии, то навигационная область, полигоны которой обрабатываются первой, выигрывает право собственности. Полигоны обрабатываются в том же порядке, в котором навигационные области были зарегистрированы на NavigationServer.
Примечание: Если навигационные сетки из разных регионов навигации перекрываются (чего следует избегать в целом), результат может оказаться не таким, как ожидалось.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
point | Vector2 | — |
boolRegionSetEnabledvoid
public static void RegionSetEnabled(Rid region, bool enabled);Включает или исключает регион из новых запросов после обновления карты. Уже возвращённые массивы путей не переписываются: игра должна запросить новый маршрут и обработать недостижимость.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
enabled | bool | — |
enabledtrue включает регион, false исключает его из новых поисков после синхронизации.
RegionSetEnterCostvoid
public static void RegionSetEnterCost(Rid region, float enterCost);Устанавливает enter_cost для этого region.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
enterCost | float | — |
RegionSetMapvoid
public static void RegionSetMap(Rid region, Rid map);Ставит в очередь назначение региона карте. Регион принадлежит одной карте; перенос удаляет прежнюю принадлежность. Нулевой RID карты отсоединяет регион, но не освобождает его.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
map | Rid | — |
regionRID живого региона, который нужно назначить или отсоединить.
mapRID карты 2D либо default для отсоединения. Это не передача владения RID региона.
RegionSetNavigationLayersvoid
public static void RegionSetNavigationLayers(Rid region, uint navigationLayers);Установить навигационные слои региона. Это позволяет выбирать регионы из запроса пути (при использовании NavigationServer2D.MapGetPath).
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
navigationLayers | uint | — |
RegionSetNavigationPolygonvoid
public static void RegionSetNavigationPolygon(Rid region, NavigationPolygon navigationPolygon);Устанавливает navigation_polygon для региона.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
navigationPolygon | NavigationPolygon | — |
RegionSetOwnerIdvoid
public static void RegionSetOwnerId(Rid region, ulong ownerId);Установите ObjectID объекта, который управляет этим регионом.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
ownerId | ulong | — |
RegionSetTransformvoid
public static void RegionSetTransform(Rid region, Transform2D transform);Задаёт размещение навигационной геометрии региона на карте. В установленном 2D-сервере проверены перенос и масштаб вершин. Трансформ не перезапекает зазор под персонажа и не переносит физическое тело автоматически.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
transform | Transform2D | — |
transformПреобразование локальных навигационных вершин в пространство карты; Identity возвращает исходное размещение.
RegionSetTravelCostvoid
public static void RegionSetTravelCost(Rid region, float travelCost);Устанавливает travel_cost для этого region.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
travelCost | float | — |
RegionSetUseAsyncIterationsvoid
public static void RegionSetUseAsyncIterations(Rid region, bool enabled);Если enabled равно true, то region использует асинхронный процесс синхронизации, который выполняется в фоновом потоке.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
enabled | bool | — |
RegionSetUseEdgeConnectionsvoid
public static void RegionSetUseEdgeConnections(Rid region, bool enabled);Управляет участием региона в дополнительных соединениях рёбер. В проверке двух раздельных прямоугольников отключение разрывает маршрут через margin-соединение. Сетка слияния остаётся отдельным механизмом.
| Имя | Тип | По умолчанию |
|---|---|---|
region | Rid | — |
enabled | bool | — |
enabledРазрешение дополнительных соединений для региона; изменение проходит через обновление навигации.
SetActivevoid
public static void SetActive(bool active);Control активация этого сервера.
| Имя | Тип | По умолчанию |
|---|---|---|
active | bool | — |
SetDebugEnabledvoid
public static void SetDebugEnabled(bool enabled);Переключает флаг в сборке с DEBUG_ENABLED и откладывает уведомление об изменении. Без этой опции тело переключателя не выполняется. Не создаёт отображение произвольных серверных RID.
| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
enabledtrue для включения, false для выключения. Для временной диагностики сохраните и восстановите исходное значение.
SimplifyPath2 перегрузки
public static Vector2[] SimplifyPath(Vector2[] path, float epsilon);Возвращает упрощенную версию path Удаление менее критических точек пути. epsilonВ упрощении используется вариант алгоритма Ramer-Duglas-Peuker для уничтожения кривых точек.
Упрощение путей может быть полезным для смягчения различных последствий в связи с проблемами, которые могут возникнуть при определенных типах агентов и поведении сценария.
| Имя | Тип | По умолчанию |
|---|---|---|
path | Vector2[] | — |
epsilon | float | — |
Vector2[]public static Vector2[] SimplifyPath(ReadOnlySpan<Vector2> path, float epsilon);Возвращает упрощенную версию path Удаление менее критических точек пути. epsilonВ упрощении используется вариант алгоритма Ramer-Duglas-Peuker для уничтожения кривых точек.
Упрощение путей может быть полезным для смягчения различных последствий в связи с проблемами, которые могут возникнуть при определенных типах агентов и поведении сценария.
| Имя | Тип | По умолчанию |
|---|---|---|
path | ReadOnlySpan<Vector2> | — |
epsilon | float | — |
Vector2[]SourceGeometryParserCreateRid
public static Rid SourceGeometryParserCreate();Создает новый источник парсера геометрии. Если Callable установлен для парсера с NavigationServer2D.SourceGeometryParserSetCallback, обратный вызов будет вызван для каждого отдельного узла, который анализируется всякий раз, когда используется NavigationServer2D.ParseSourceGeometryData.
RidSourceGeometryParserSetCallbackvoid
public static void SourceGeometryParserSetCallback(Rid parser, Callable callback);Устанавливает callback Callable для конкретной исходной геометрии parser. Callable получит вызов со следующими параметрами:
navigation_mesh- СсылкаNavigationPolygon, используемая для определения настроек анализа. НЕ редактируйте и не добавляйте напрямую в навигационную сетку.source_geometry_data- СсылкаNavigationMeshSourceGeometryData2D. Добавьте пользовательскую исходную геометрию для запекания навигационной сетки к этому объекту.node-Entity, который анализируется.
| Имя | Тип | По умолчанию |
|---|---|---|
parser | Rid | — |
callback | Callable | — |
Сигналы и события3
AvoidanceDebugChangedСобытие
public static event Action AvoidanceDebugChanged;Выдается при изменении настроек отладки избегания. Доступно только в отладочных сборках.
MapChangedСобытие
public static event NavigationServer2D.MapChangedEventHandler MapChanged;Выдается при обновлении навигационной карты, при перемещении или изменении региона.
| Имя | Тип | По умолчанию |
|---|---|---|
map | Rid | — |
NavigationDebugChangedСобытие
public static event Action NavigationDebugChanged;Выдается при изменении настроек отладки навигации. Доступно только в отладочных сборках.
NavigationServer2D.ProcessInfo
| Значение | Описание |
|---|---|
ActiveMaps = 0 | Константа для получения количества активных навигационных карт. |
AgentCount = 2 | Константа для получения количества активных навигационных агентов, обрабатывающих избегание. |
EdgeConnectionCount = 7 | Константа для получения количества ребер полигонов навигационной сетки, которые считаются связанными по близости ребер. |
EdgeCount = 5 | Константа для получения количества ребер полигона навигационной сетки. |
EdgeFreeCount = 8 | Константа для получения количества ребер полигонов навигационной сетки, которые не удалось объединить, но которые все еще могут быть соединены близостью ребер или связями. |
EdgeMergeCount = 6 | Константа для получения количества ребер полигонов навигационной сетки, которые были объединены из-за перекрытия ключей ребер. |
LinkCount = 3 | Константа для получения количества активных навигационных ссылок. |
ObstacleCount = 9 | Константа для получения количества активных навигационных препятствий. |
PolygonCount = 4 | Константа для получения количества полигонов навигационной сетки. |
RegionCount = 1 | Константа для получения количества активных навигационных регионов. |