Navigation¶
23 tools. Back to the index.
add_eqs_generator¶
Destructive.
Adds a UEnvQueryGenerator subclass to a UEnvQuery option. If the option has no generator yet, this becomes it; otherwise replaces. option_index names an existing option, or equals the option count to append one new empty option; a negative option_index, or one past the option count, is an error checked before anything changes.
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
generator_class |
string | yes | Generator class name (e.g. "ActorsOfClass", "SimpleGrid", "PathingGrid") or full path (e.g. "/Script/AIModule.EnvQueryGenerator_ActorsOfClass") |
option_index |
number | no | Optional option index to target (default 0); the current option count appends a new option, a larger index is refused |
Returns: { query_path, option_index, generator_class, generator_name, replaced, saved }
add_eqs_option¶
Additive.
Appends a new empty option to a UEnvQuery and returns its index.
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
Returns: { query_path, option_index, option_count }
add_eqs_test¶
Additive, idempotent.
Add a test of test_class to an option of a UEnvQuery asset, after the option's existing tests. Idempotent per class: if the option already has a test of that class, that one is returned (already_existed=true) and nothing is added, so an option holds at most one test per class. option_index names an existing option, or equals the option count to append one new empty option; a negative option_index, or one past the option count, is an error checked before anything changes. Undoable as one editor transaction; marks the asset dirty without saving (save_asset). Valid classes: list_eqs_test_types; configure the test with set_eqs_test_scoring; remove_eqs_test is the inverse.
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
test_class |
string | yes | Test class name (e.g. "Distance", "Trace", "Pathfinding", "Dot") or full path |
option_index |
number | no | Optional option index to target (default 0); the current option count appends a new option, a larger index is refused |
Returns: { query_path, option_index, test_class, test_name, test_index, test_count, already_existed } — idempotent by test class within the option
create_eqs_query¶
Additive.
Creates and saves an empty Environment Query System (EQS) asset (UEnvQuery)
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Asset name for the new UEnvQuery |
package_path |
string | no | Target content package path where the asset is created (default /Game/EQS) |
Returns: { name, package_path, asset_path, asset_class, query_name, has_options, option_count, already_exists, saved, success, message }
diagnose_navmesh¶
Read-only.
One-call navmesh diagnosis: reports every ANavMeshBoundsVolume (brush validity + world extent — detects the EMPTY brush = 0 bounds that yields 0 tiles), inclusion/total nav bounds, bWholeWorldNavigable, invoker-only generation + registered invokers, the RecastNavMesh MaxTiles / built (active) tile count / RuntimeGeneration, and is_spatially_loaded per volume, plus an actionable diagnosis list. Read-only.
| Parameter | Type | Required | Description |
|---|---|---|---|
world |
string | no | Optional world selector: absent/'editor' (default) | 'server' (the one you want in PIE: the navmesh is SERVER-AUTHORITATIVE, so only the authoritative world has a nav system and a RecastNavMesh) | 'pie' (ambiguous: PlayWorld, else the first PIE context -- may well land on the CLIENT) | 'client' | 'pie:N' | 'game' (alias of 'pie'). |
Returns: { world, has_authority, nav_system_present, whole_world_navigable, generate_only_around_invokers, supported_agent_count, nav_data_count, is_navigation_dirty, nav_bounds_volume_count, nav_bounds_volumes:[{actor_name, actor_label, is_spatially_loaded, brush_present, brush_empty, bounds_valid, bounds_extent:{x,y,z}, brush_poly_count, note}], registered_nav_bounds_count, total_nav_bounds:{valid, min:{x,y,z}, max:{x,y,z}, extent:{x,y,z}}, invoker_component_count, invoker_location_count, invoker_seed_bounds_count, recast_navmesh_present, recast:{name, runtime_generation, supports_runtime_generation, max_tiles, active_tile_count, tile_size_uu, is_spatially_loaded}, diagnosis:[string], success, world_name, world_package, world_type, net_mode, pie_instance }. On a CLIENT world (has_authority=false) the heuristics are suppressed and `diagnosis` says so first: a client with no nav system / no RecastNavMesh is EXPECTED, and rebuild_navigation is NEVER recommended from there.
diff_collision_channels¶
Read-only.
Aligns this project's custom collision channels with another project's config BY NAME and reports index shifts (which ECC_GameTraceChannelN slot / TraceTypeQueryN a same-named channel moved to). Diagnoses the migration hazard where custom channels don't travel and traces silently stop hitting. Reads the other project's DefaultEngine.ini straight from disk (not loaded). Read-only.
| Parameter | Type | Required | Description |
|---|---|---|---|
other_project_config_dir |
string | yes | Path to the OTHER project's Config directory (containing DefaultEngine.ini); the project root also works (Config/DefaultEngine.ini is tried as a fallback) |
Returns: { other_ini_path, other_ini_found, aligned_by, this_channel_count, other_channel_count, shifted_count, matched:[{name, is_trace_type, channel_this, channel_other, channel_shifted, query_this, query_other, query_shifted}], only_in_this:[{name, channel, query_type}], only_in_other:[{name, channel, query_type}], success }
dump_collision_channels¶
Read-only.
Dumps this project's custom collision channels (from config): each ECC_GameTraceChannelN / object channel -> friendly name, whether it's a trace or object channel, and its TraceTypeQueryN / ObjectTypeQueryN index (the value a raycast/overlap passes). Read-only. Read from GConfig [/Script/Engine.CollisionProfile] DefaultChannelResponses.
No parameters.
Returns: { source, builtin_trace_count, builtin_object_count, count, channels:[{channel, channel_value, name, is_trace_type, is_static_object, is_custom_game_slot, default_response, query_type, query_index, query_number}], success }
get_eqs_query_info¶
Read-only.
Reports the composition of a UEnvQuery asset: each option's generator class and its list of test classes. Read-only.
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
Returns: { query_path, option_count, options:[{index, generator_class?, generator_path?, test_count, tests:[{index, class, path}]}] }
get_navigation_info¶
Read-only.
Read the navigation system state of the editor world (never PIE): nav_system_present, nav_data_count, supported_agent_count with the agent names, and is_navigation_dirty. Read-only; a world without a navigation system reports zeros instead of an error.
No parameters.
Returns: { nav_system_present, nav_data_count, supported_agent_count, is_navigation_dirty, supported_agents, success }
get_recast_navmesh_settings¶
Read-only.
Reads the generation settings of the editor world's default ARecastNavMesh.
No parameters.
Returns: { recast_navmesh_present, navmesh_name, agent_radius, agent_height, agent_max_slope, agent_max_step_height, tile_size_uu, tile_size_uu_raw, cell_size, cell_height, merge_region_size, min_region_area, max_simplification_error, simplification_elevation_ratio, note, success }
list_eqs_context_types¶
Read-only.
Lists all concrete UEnvQueryContext subclasses usable as EQS contexts. Read-only reflection (GetDerivedClasses).
No parameters.
Returns: { base_class, count, types:[{name, path}] }
list_eqs_generator_types¶
Read-only.
Lists all concrete UEnvQueryGenerator subclasses usable as EQS generators. Read-only reflection (GetDerivedClasses).
No parameters.
Returns: { base_class, count, types:[{name, path}] }
list_eqs_test_types¶
Read-only.
Lists all concrete UEnvQueryTest subclasses usable as EQS tests. Read-only reflection (GetDerivedClasses).
No parameters.
Returns: { base_class, count, types:[{name, path}] }
rebuild_navigation¶
Destructive.
Triggers a navigation build on the editor world's navigation system
No parameters.
Returns: { rebuilt, nav_system_present, message, success, nav_data_count }
remove_eqs_generator¶
Destructive, idempotent.
Clears the generator on a query option. Idempotent (removed=false if the option had none).
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
option_index |
number | no | Option index (default 0) |
Returns: { query_path, option_index, removed }
remove_eqs_option¶
Destructive.
Remove the option at option_index, with its generator and tests, from a UEnvQuery asset; later options shift down one index. Marks the asset dirty without saving (use save_asset); an out-of-range index is an error, not a no-op. Returns removed and option_count.
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
option_index |
number | yes | Index of the option to remove (required) |
Returns: { query_path, option_index, removed, option_count }
remove_eqs_test¶
Destructive.
Remove the test at test_index from one option of a UEnvQuery asset; later tests shift down one index. Marks the asset dirty without saving (use save_asset); an out-of-range option or test index is an error, not a no-op. Returns removed and test_count.
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
test_index |
number | yes | Index of the test to remove within the option (required) |
option_index |
number | no | 0-based index of the query option that holds the test (default 0). |
Returns: { query_path, option_index, test_index, removed, test_count }
run_eqs_query¶
Destructive.
Runs a UEnvQuery synchronously against the editor world (UEnvQueryManager::RunInstantQuery) and returns the scored items. Generators/tests needing navigation data (SimpleGrid/PathingGrid/Pathfinding/Project/Trace) require a built navmesh; without it the query returns a non-Success status honestly (still success:true, ran:true).
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
querier_actor |
string | no | Optional actor display label or name used as the query Querier (drives contexts like EnvQueryContext_Querier); default: the query asset (no location) |
run_mode |
string | no | "SingleResult" | "RandomBest5Pct" | "RandomBest25Pct" | "AllMatching" (default "AllMatching") |
max_items |
number | no | Optional cap on how many items are serialized into the payload (default 50; the query still evaluates all) |
Returns: { query_path, ran, eqs_manager_present, status, is_successful, num_items, item_type, run_mode, items:[{index, score, location:{x,y,z}, actor?}], note? }
set_eqs_generator_properties¶
Destructive, idempotent.
Sets properties on an option's generator by reflection (mcp_common::SetObjectProperty). Class-ref props (SearchedActorClass, SearchCenter) take a class path string; FAIDataProvider*Value props (SearchRadius, GenerateOnlyActorsInRadius) take an object like {"DefaultValue": <n>}.
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
properties |
object | yes | JSON object { PropertyName: value, ... } applied to the generator |
option_index |
number | no | Option index whose generator is edited (default 0) |
Returns: { query_path, option_index, generator_class, set:[name], failed:[{name, error}], applied:{name: stored_value_text} }
set_eqs_test_scoring¶
Destructive, idempotent.
Sets scoring/filter parameters on a test within a query option and PERSISTS them on the asset (TestPurpose, FilterType, ScoringEquation, ScoringFactor, FloatValue bounds are all real UEnvQueryTest UPROPERTYs). The response reports the values read back from the test object.
| Parameter | Type | Required | Description |
|---|---|---|---|
query_path |
string | yes | /Game/... path to the UEnvQuery asset (required) |
option_index |
number | no | Option index (default 0) |
test_index |
number | no | Test index within the option (default 0) |
test_purpose |
string | no | "Filter" | "Score" | "FilterAndScore" (default "Score") |
filter_type |
string | no | "Minimum" | "Maximum" | "Range" | "Match" (default "Range") |
scoring_equation |
string | no | "Linear" | "Square" | "InverseLinear" | "SquareRoot" | "Constant" (default "Linear") |
scoring_factor |
number | no | Optional weight multiplier applied after the equation (ScoringFactor.DefaultValue); only applied when provided |
float_value_min |
number | no | Optional min for FloatValueMin (default 0) |
float_value_max |
number | no | Optional max for FloatValueMax (default 1) |
Returns: { query_path, option_index, test_index, test_name, test_purpose, filter_type, scoring_equation, scoring_factor, float_value_min, float_value_max }
set_recast_navmesh_settings¶
Destructive, idempotent.
Configures generation settings on the editor world's default ARecastNavMesh (partial/idempotent; only provided params are applied and all numeric values are clamped server-side first).
| Parameter | Type | Required | Description |
|---|---|---|---|
agent_radius |
number | no | Optional float; ARecastNavMesh::AgentRadius (>= 0) |
agent_height |
number | no | Optional float; ARecastNavMesh::AgentHeight (>= 0) |
agent_max_slope |
number | no | Optional float degrees; ARecastNavMesh::AgentMaxSlope (clamped to <= 89) |
agent_max_step_height |
number | no | Optional float; SetAgentMaxStepHeight(Default, v) (>= 0) |
tile_size_uu |
number | no | Optional float; ARecastNavMesh::TileSizeUU (clamped to >= 300) |
cell_size |
number | no | Optional float; SetCellSize(Default, v) (clamped 1..1024) |
cell_height |
number | no | Optional float; SetCellHeight(Default, v) (clamped 1..1024) |
merge_region_size |
number | no | Optional float; ARecastNavMesh::MergeRegionSize (>= 0) |
min_region_area |
number | no | Optional float; ARecastNavMesh::MinRegionArea (>= 0) |
max_simplification_error |
number | no | Optional float; ARecastNavMesh::MaxSimplificationError (>= 0) |
simplification_elevation_ratio |
number | no | Optional float; ARecastNavMesh::SimplificationElevationRatio (>= 0) |
rebuild |
boolean | no | Optional bool (default false); when true, calls UNavigationSystemV1::Build() synchronously to apply |
Returns: { recast_navmesh_present, navmesh_name, applied:{field:value}, requires_rebuild, rebuilt, note, success }
spawn_nav_link_proxy¶
Additive.
Spawns an ANavLinkProxy actor in the editor world at a location
| Parameter | Type | Required | Description |
|---|---|---|---|
location |
array | no | [x, y, z] world location for the nav link proxy |
Returns: { actor_name, actor_label, actor_path, actor_class, success }
spawn_nav_modifier_volume¶
Additive.
Spawns an ANavModifierVolume in the editor world with a box brush
| Parameter | Type | Required | Description |
|---|---|---|---|
location |
array | no | [x, y, z] world location for the volume |
area_class |
string | no | Optional UNavArea subclass name to apply via SetAreaClass |
extent |
array | no | Optional [x, y, z] box half-extent (default 100,100,100) |
Returns: { actor_name, actor_label, actor_path, actor_class, brush_built, area_class_applied, area_class, success }