Navigation3D HTN integration

When HTN Planner is also enabled, Navigation3D registers Nav3D.* flight / move operators and a sensor so the planner can treat “fly somewhere / take off / land / move on ground” as atomic tasks. gem.json does not hard-depend on HtnPlanner—the adapter builds and loads only when both Gems are enabled.

Six operators

Operator IDDomainFirst argPurpose
Nav3D.FlyToAir (Hybrid optional)TargetPosFly to a position
Nav3D.FlyToEntityAirTargetEntityFly to an entity
Nav3D.TakeOffHybrid— (optional TakeoffLink)Take off; sets Self.IsAirborne = true
Nav3D.LandHybrid— (optional landing point)Land; clears Self.IsAirborne
Nav3D.MoveToGroundTargetPosGround move to a position
Nav3D.MoveToEntityGroundTargetEntityGround move to an entity

Execution model (summary)

Begin → FindPathAsync
 → OnPathReady
 ├─ Air segment → FlightPathFollow.StartFollowing → OnPathCompleted → next or Success
 ├─ Ground segment → ProjectProvided immediate success, or SimpleWaypoint advance
 └─ Failure / OnPathBlocked / Deviated / AvoidanceFailed → Failed
Abort → cancel query and stop following

Hybrid paths may contain multiple Air segments followed in order.

.htnnode presets

Under Assets/HtnNodes/:

PresetNotes
FlyTo.htnnodeTargetPos + CruiseAltitude (default 30)
FlyToEntity.htnnodeTarget entity
TakeOff.htnnodeHoverHeight 10, allowFreeVerticalTransfer true; optional TakeoffLink
Land.htnnodeLanding point

MoveTo / MoveToEntity have no presets—C++ registration only.

FlightAgentSensorComponent

Maintains WorldState keys the planner reads:

KeyMeaning
Self.IsAirborneWhether airborne
Self.CanFlyStatic flight capability
Self.PositionSelf position
Self.NearestLandingPadNearest landable domain link

Minimal HTN flight-agent setup

  • HtnAgentComponent (domain + plan / execute)
  • HybridNavigationComponent (Nav3D.* query facade)
  • FlightPathFollowComponent (Air-segment follow)
  • Recommended: FlightAgentSensorComponent
  • Scene: SVO volume + ground Detour navmesh
  • Takeoff / land: NavigationDomainLinkComponent, or Hybrid Free vertical transfer

Next steps


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.