85 std::unique_ptr<INavigationProvider> provider, std::unique_ptr<INavigationRequestFactory> requestFactory);
95 std::string& inOutMemoryJson)
override;
99 std::string& inOutMemoryJson)
override;
103 std::string_view memoryJson)
noexcept override;
113 friend bool operator<(
const TaskKey&
left,
const TaskKey&
right)
noexcept {
118 NavigationTaskService(std::unique_ptr<INavigationProvider> provider,
119 std::unique_ptr<INavigationRequestFactory> requestFactory);
120 [[nodiscard]]
static TaskKey
key(
const TaskContext&
context,
const TaskSpec& spec);
122 std::unique_ptr<INavigationProvider> provider_;
123 std::unique_ptr<INavigationRequestFactory> requestFactory_;
124 std::map<TaskKey, NavigationTicket> active_;
#define EVENGINE_API_PLATFORM
const GltfImportRequest & request
Move-only, checked operation results for the common layer.
Strong generation-qualified handles for non-ECS runtime registries.
const VegetationPresetContext & context
Move-only operation result carrying either a value or Status.
Process-local slot identity tagged by the registry that owns it.
Narrow asynchronous pathfinding and locomotion provider contract. @thread Calls are simulation-thread...
virtual Result< NavigationProgress > poll(NavigationTicket ticket, std::uint64_t simulationTick)=0
Polls one ticket without blocking the simulation thread.
virtual void abandon(NavigationTicket ticket) noexcept=0
Unconditionally abandons local/backend work during task teardown.
virtual Result< NavigationTicket > begin(const NavigationRequest &request)=0
Starts an owning backend request and returns its generation ticket.
virtual ~INavigationProvider()=default
Releases INavigationProvider resources.
Builds a typed navigation request from an authored task and current agent projection.
virtual Result< NavigationRequest > create(const TaskContext &context, const TaskSpec &task) const =0
Creates an owning request without mutating provider or world state.
virtual ~INavigationRequestFactory()=default
Releases INavigationRequestFactory resources.
Owned extension point for navigation, animation, combat and gameplay tasks. @thread All calls are sim...
ITaskService adapter for asynchronous move-to requests.
NavigationTaskService(const NavigationTaskService &)=delete
std::size_t outstandingCount() const noexcept
Number of live backend tickets owned by this adapter.
NavigationTaskService & operator=(const NavigationTaskService &)=delete
NavigationPhase
NavigationPhase public API.
StopReason
StopReason public API.
NavigationProgress public API.
std::array< double, 3 > desiredVelocity
NavigationRequest public API.
std::array< double, 3 > destination
std::array< double, 3 > start
std::uint64_t requestedTick
NavigationTicketTag public API.